如何使用jQuery触发自定义事件?

10

我在jQuery的ready方法中将一个自定义事件处理程序附加到body上。
之后我立即使用trigger触发了自定义事件,但似乎没有任何反应。

$(function(){
    $("body").on("test", function(){ alert("test triggered"); }
    $("body").trigger("test");
}

.on - 将事件处理程序函数附加到一个或多个事件以选择元素。这里的事件是什么? - zod
2
@dementic 请不要在编辑中更改代码。 - Musa
@zod "test",这是一个自定义事件。 - Šime Vidas
将问题回滚到原始状态以反映根本问题。 - Kirby
2个回答

6
首先,您有一个语法错误。
$(function(){
    $("body").on("test", function(){
        alert("test triggered");
    });  < ---- Missing this
    $("body").trigger("test");
});

其次,你不能从控制台触发事件,因为$(function() {}); 形成闭包,你将无法访问其中的任何方法。

若要使它像您期望的那样工作,请在脚本文件中设置一个调试点,然后尝试触发事件。现在它可以正常工作了,因为事件已在作用域内。


4
当然可以。在控制台中执行 $("body").trigger("test"); 将会起作用。为什么不行呢? $ 是全局变量。 - Šime Vidas
非常抱歉出现了语法错误。我不知道事件侦听器无法监听其闭包外发生的事件。谢谢! - JJK

4

看起来你的代码格式不正确。请检查你的调试控制台以确认。

你可以尝试这样做:

$(function(){
    $("body").on("test", function(){
        alert("test triggered");
    });
    $("body").trigger("test");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接