2014-05-21 48 views
2

我願做這樣的事情jQuery的觸發自定義全局事件

$("#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

+0

[放大](http://amplifyjs.com/api/pubsub/)是一個很棒的小圖書館,它會給你一個全球性的pub/sub系統。 – Mathletics

+0

感謝Amplify正是我一直在尋找的。 – Enermis

+0

只需更改$ .event.trigger({type:「custom」});到$('*')。trigger('custom'); –

回答

9

我不知道我理解你的問題,但如果你改變你的代碼如下:

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

它應該工作。這裏有一個demo