最近我发现当我点击其他元素时, 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>
javascript
$('.js-a1').click(function () {
$('.js-a2').click();
return false;
});
这里有一个jsfiddle - 1。点击第一个链接不会触发第二个链接的本地点击。
经过一些搜索,我找到了一个解决方案和解释。
解决方案
使用原生DOM元素。
$('.js-a1').click(function () {
$('.js-a2').get(0).click();
return false;
});
这里是jsfiddle - 2。
解释
我在 Learn jQuery 上发现了一篇文章:触发事件处理程序。它告诉我:
.trigger() 函数不能用于模拟本机浏览器事件,例如单击文件输入框或锚标记。这是因为没有使用 jQuery 的事件系统附加相应的事件处理程序。
问题
那么我的问题来了:
如何理解“没有使用 jQuery 的事件系统附加相应的事件处理程序”?
为什么没有相应的事件处理程序?
编辑
我更新了我的 jsfiddles,似乎类名有误。
return false;
将同时执行e.preventDefault();
和e.stopPropagation();
。 - Miaonster