2011-07-28 31 views
12

我有一個自定義事件,我想在某些時候觸發,但與選擇無關。在所有聽衆上觸發jQuery事件

即 - 我想做些事情,將表現爲運行

$("*").trigger('customEvent'); 

但jQuery的文檔警告說,使用通用選擇是很慢的。 有沒有辦法觸發綁定到特定事件的所有對象,而無需使用通用選擇器$("*")

謝謝!

P.S - 我正在使用一個特定的class,稱爲custom_event_listener並使用$('.custom_event_listener').trigger('customEvent')來避免使用通用選擇器。我想知道是否有辦法避免使用class

+0

難道你不能讓這個事件冒泡並在更高的層次上捕獲它嗎? – Andre

+0

所以,你想對所有元素做一些事情,但不是使用全選元素。還有另一種方法可以縮小選擇範圍,但如果沒有關於你在做什麼的更多信息,我們就不知道它是什麼。 – Zirak

+0

@Andre我不確定這是什麼意思。有點像jQuery中的新手。我會谷歌'泡沫jQuery事件',看看它是否有幫助。 – Ben

回答

15

您可以觸發所有具有與之結合這樣的處理程序的事件:

$.event.trigger('customEvent'); 

This loops through $.cache to find what actually has a handler, then fires on those elements ...而不僅僅是尋找元素和射擊每一個事件。

+0

到目前爲止最好的答案。如果我沒有得到更進一步縮小的答案,我會將其標記爲答案。 – Ben

+3

這是沒有記錄和不贊成使用的:https://github.com/jquery/jquery/blob/935eb19d87063ec30b717b3d45368d3c73cb591d/jquery-migrate.js#L481 –