jQuery触发自定义全局事件

5
我想做类似这样的事情。
$("#A").on("click", function(){
    $.event.trigger({type:"custom"});
});
$("#B").on("custom", function(e){
    $("#B").removeClass("hidden");
});
$("#C").on("custom", function(e){
    alert("something");
}

我想用JavaScript触发自定义事件,然后能够在页面中的不同元素上使用.on函数。点击“#A”将会触发所有已注册元素的事件。

我注意到触发函数是在一个元素上调用而不是全局调用,这不是我想要的。

Fiddle


Amplify是一个非常出色的小型库,它提供了一个全局发布/订阅系统。 - Evan Davis
谢谢,Amplify正是我所寻找的。 - Enermis
只需将 $.event.trigger({type:"custom"}); 更改为 $('*').trigger('custom'); - Conny Olsson
1个回答

15

我不确定我理解你的问题,但如果你将你的代码更改为这样:

$("#A").on("click", function(){
    $(document).trigger("custom");
});
$(document).on("custom", function(e){
    $("#B").removeClass("hidden");
});
$(document).on("custom", function(e){
    alert("something");
});

它应该能够工作。这是一个演示


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