Javascript 以编程方式触发jQuery单击事件
我有一个与内联onclick事件的链接:Javascript 以编程方式触发jQuery单击事件,javascript,jquery,events,dom,Javascript,Jquery,Events,Dom,我有一个与内联onclick事件的链接: <a href="#" onclick="somefunction();">click</a> jQuery("#addMoreOptions").live('click',function(){ console.log('clicked'); }); 当我单击浏览器上的链接时,它可以正常工作,但当我以编程方式模拟时,它就不能正常工作: jQuery("#addMoreOptions").click()
<a href="#" onclick="somefunction();">click</a>
jQuery("#addMoreOptions").live('click',function(){
console.log('clicked');
});
当我单击浏览器上的链接时,它可以正常工作,但当我以编程方式模拟时,它就不能正常工作:
jQuery("#addMoreOptions").click();
编程版本会触发内联事件,但不会触发“活动”事件
当一个事件附加了多个函数时,它使用的顺序是什么?触发单击事件的另一种方法是使用.trigger()函数:
jQuery('#addMoreOptions').trigger('click');
我很确定这是由事情发生的顺序造成的 如果你看一下,你会发现一切都按预期进行。这是因为事件已注册,然后被调用。代码如下所示:
jQuery(document).ready(function(){
jQuery("#addMoreOptions").live('click',function(){
console.log('clicked');
});
$('#addMoreOptions').click();
});
function somefunction()
{
alert("clicked");
}
加载页面时,您会收到一个警报
和一个控制台.log
现在,只需将$(“#addMoreOptions”)放入一个非常小的更改即可。单击()
在将事件注册为之前,您只能从内联函数中获得警报
供参考的代码是
jQuery(document).ready(function(){
$('#addMoreOptions').click();
jQuery("#addMoreOptions").live('click',function(){
console.log('clicked');
});
});
function somefunction()
{
alert("clicked");
}
为我工作:。你在使用哪个版本的jQuery/你能在哪里产生一把小提琴吗/你在使用什么浏览器?不明白你在说什么…你说的以编程方式模拟是什么意思?你在.live
上注册事件的事实让我觉得当你发布。click()
元素还不存在。你是对的,你的示例很有效。我使用的是Chrome,jQuery的最新版本。我会更深入地研究,然后再回来。我同意@Jamiec的观点,元素是动态加载的吗?如果不是,只是为了好玩。在触发click事件之前添加延迟。考虑到click()
所做的一切都是调用trigger('click')
,这不会有什么区别。没有区别,问题可能在于live函数在调用事件之前没有绑定它。我删除了“内联”代码并将其移动到live()调用,所以我对事情的顺序有了更多的控制。它修复了它。