以编程方式触发时的 jQuery 单击事件
我有一个带有内联 onclick 事件的链接:
<a href="#" onclick="somefunction();">click</a>
我在 onclick 事件上注册了一个附加函数:
jQuery("#addMoreOptions").live('click',function(){
console.log('clicked');
});
当我单击浏览器上的链接时,该函数可以正常工作,但当我以编程方式模拟时则不行:
jQuery("#addMoreOptions").click();
编程版本会触发内联事件,但不会触发“活”一。
当一个事件附加多个函数时,它使用什么顺序?
I have a link with an inline onclick event:
<a href="#" onclick="somefunction();">click</a>
I registered an additional function on the onclick event:
jQuery("#addMoreOptions").live('click',function(){
console.log('clicked');
});
Which works fine when I click on the link on the browser, but not when I simulate programmatically:
jQuery("#addMoreOptions").click();
The programatical version triggers the inline event but not the "live" one.
When you have multiple functions attached to an event, what order does it use?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我很确定这是由事情发生的顺序引起的。
如果您查看这个实例,您会发现一切都按预期工作。这是因为事件是被注册的,然后被调用的。代码如下所示:
当页面加载时,您会收到一个
alert
和一个console.log
。现在,只需在注册事件之前添加
$('#addMoreOptions').click();
即可,如 这个实例您只能从内联函数中获得警报
。作为参考,代码是
I am pretty sure this is caused by the order of things happening.
If you look at this live example you'll see everything works as expected. This is because the event is registered, and then called. The code looks like:
When the page loads, you get an
alert
and aconsole.log
.Now with the very small change of putting the
$('#addMoreOptions').click();
before registering the event as in this live example you only get thealert
from the inline function.For reference the code is
触发点击事件的另一种方法是使用 .trigger() 函数:
An alternative way of triggering a click event would be to use the .trigger() function: