【发布时间】:2014-01-13 23:22:11
【问题描述】:
最近发现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 上找到了一篇帖子:Triggering Event Handlers。它告诉我:
.trigger() 函数不能用于模拟原生浏览器事件,例如单击文件输入框或锚标记。这是因为,没有使用与这些事件对应的 jQuery 事件系统附加事件处理程序。
问题
所以我的问题来了:
如何理解'没有使用jQuery的事件系统附加的事件处理程序对应这些事件'?
为什么没有对应的事件处理器?
编辑
我更新了我的 jsfiddles,似乎类名有错误。
【问题讨论】:
-
你试过 event.preventDefault() 吗?
-
@TejasvaDhyani 是的,jQuery 中的
return false;将同时执行e.preventDefault();和e.stopPropagation();。
标签: javascript jquery