Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以编程方式触发jQuery单击事件_Javascript_Jquery_Events_Dom - Fatal编程技术网

Javascript 以编程方式触发jQuery单击事件

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()

我有一个与内联onclick事件的链接:

<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()调用,所以我对事情的顺序有了更多的控制。它修复了它。