我有一个内联onclick事件的链接:
<a href="#" onclick="somefunction();">click</a>
我在onclick事件上注册了一个附加功能:
jQuery("#addMoreOptions").live('click',function(){
console.log('clicked');
});
当我点击浏览器上的链接时,哪个工作正常,但是当我以编程方式进行模拟时,这个工作正常:
jQuery("#addMoreOptions").click();
programatical版本触发内联事件但不触发“实时”事件。
如果您有多个附加到事件的功能,它会使用什么顺序?
答案 0 :(得分:1)
我很确定这是由事情发生的顺序引起的。
如果你看this live example,你会看到一切都按预期工作。这是因为事件已注册,然后被调用。代码如下:
jQuery(document).ready(function(){
jQuery("#addMoreOptions").live('click',function(){
console.log('clicked');
});
$('#addMoreOptions').click();
});
function somefunction()
{
alert("clicked");
}
加载页面后,您会收到alert
和console.log
。
现在,在this live example注册事件之前放置$('#addMoreOptions').click();
的变化非常小,您只能从内联函数中获取alert
。
供参考,代码为
jQuery(document).ready(function(){
$('#addMoreOptions').click();
jQuery("#addMoreOptions").live('click',function(){
console.log('clicked');
});
});
function somefunction()
{
alert("clicked");
}
答案 1 :(得分:0)
触发click事件的另一种方法是使用.trigger()函数:
jQuery('#addMoreOptions').trigger('click');