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

时间:2011-09-08 12:11:46

标签: javascript jquery events dom

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

<a href="#" onclick="somefunction();">click</a>

我在onclick事件上注册了一个附加功能:

jQuery("#addMoreOptions").live('click',function(){
        console.log('clicked');
    });

当我点击浏览器上的链接时,哪个工作正常,但是当我以编程方式进行模拟时,这个工作正常:

jQuery("#addMoreOptions").click();

programatical版本触发内联事件但不触发“实时”事件。

如果您有多个附加到事件的功能,它会使用什么顺序?

2 个答案:

答案 0 :(得分:1)

我很确定这是由事情发生的顺序引起的。

如果你看this live example,你会看到一切都按预期工作。这是因为事件已注册,然后被调用。代码如下:

jQuery(document).ready(function(){   

    jQuery("#addMoreOptions").live('click',function(){
        console.log('clicked');
    });

     $('#addMoreOptions').click();      

});

function somefunction()
{
 alert("clicked");   
}

加载页面后,您会收到alertconsole.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');