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

发布于 2024-12-03 23:41:36 字数 435 浏览 1 评论 0原文

我有一个带有内联 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

油饼 2024-12-10 23:41:36

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

如果您查看这个实例,您会发现一切都按预期工作。这是因为事件是被注册的,然后被调用的。代码如下所示:

jQuery(document).ready(function(){   

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

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

});

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

当页面加载时,您会收到一个 alert 和一个 console.log

现在,只需在注册事件之前添加 $('#addMoreOptions').click(); 即可,如 这个实例您只能从内联函数中获得警报

作为参考,代码是

jQuery(document).ready(function(){   
     $('#addMoreOptions').click();  

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

});

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

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:

jQuery(document).ready(function(){   

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

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

});

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

When the page loads, you get an alert and a console.log.

Now with the very small change of putting the $('#addMoreOptions').click(); before registering the event as in this live example you only get the alert from the inline function.

For reference the code is

jQuery(document).ready(function(){   
     $('#addMoreOptions').click();  

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

});

function somefunction()
{
 alert("clicked");   
}
在梵高的星空下 2024-12-10 23:41:36

触发点击事件的另一种方法是使用 .trigger() 函数:

jQuery('#addMoreOptions').trigger('click');

An alternative way of triggering a click event would be to use the .trigger() function:

jQuery('#addMoreOptions').trigger('click');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文