最近我发现当我点击其他元素时,jQuery无法触发锚标记上的本机点击事件,下面的示例将不起作用:
HTML
<a class="js-a1" href="new.html" target="_blank">this is a link</a>
<a class="js-a2" href="another.html" target="_blank">this is another link</a>
Run Code Online (Sandbox Code Playgroud)
JavaScript的
$('.js-a1').click(function () {
$('.js-a2').click();
return false;
});
Run Code Online (Sandbox Code Playgroud)
这是jsfiddle - 1.单击第一个链接将不会触发第二个链接上的本机单击.
经过一些搜索,我找到了解决方案和解释.
使用本机DOM元素.
$('.js-a1').click(function () {
$('.js-a2').get(0).click();
return false;
});
Run Code Online (Sandbox Code Playgroud)
这是jsfiddle - 2.
我在Learn jQuery:Triggering Event Handlers上发了一篇文章.它告诉我:
.trigger()函数不能用于模仿本机浏览器事件,例如单击文件输入框或锚标记.这是因为,没有使用与这些事件对应的jQuery事件系统附加事件处理程序.
所以这是我的问题:
如何理解'没有使用与这些事件相对应的jQuery事件系统附加事件处理程序'?
为什么没有这样的相应事件处理程序?
我更新了我的jsfiddles,似乎有类名的错误.
没有使用与这些事件相对应的 jQuery 事件系统附加的事件处理程序
.click(function() {}这意味着,在学习材料的这一点上,尚未使用或.bind('click', function () {})等将 jQuery 事件处理程序附加到这些元素。
无参数用于从 jQuery 的角度.click()触发 ( ) 一个“click”事件,该事件将执行 jQuery 使用、、等注册的所有“click”事件处理程序。该伪事件不会发送到浏览器。.trigger('click').click.bind.on
。扳机()
执行附加到给定事件类型的匹配元素的所有处理程序和行为。
查看更新后的 jsFiddle 示例,点击两个链接查看差异。希望能帮助到你。