我正在尋找一種方法來實現以下功能。我可以建立一些機制來做到這一點,我正在尋求一些內置的或者非常簡單的方法,如果它存在並且我錯過了它。jQuery中的默認事件處理程序
編輯: 請注意,我正在討論隨機對象中的事件,而不是DOM元素。根據可能的副本中的建議,無法使用父級等來管理事件順序。
編輯2: 也許所有的處理程序,被稱爲回調?還是一個總是最後執行的處理程序?
考慮:
var someObject={};
$(someObject).on("event",function() { console.log('Default handler'); });
...
$(someObject).on("event",function() { console.log('Other handler'); });
做當:
$(someObject).triggerHandler("event");
輸出是:
Default handler
Other handler
我們都知道這一點。問題是:如果我想將第一個事件設置爲「默認」處理程序,如果沒有其他事件處理程序(在那裏沒有問題)要執行,或者其他處理程序沒有停止事件傳播這是問題)。
我正在尋找一種方法能夠像做:
$(someObject).on("event",function(ev) { ev.preventDefault(); });
,並防止第一事件處理程序的執行。在這個例子中沒有給出執行順序。反轉執行順序不是正確的方法。
TL; DR
是否可以設置一個默認的處理器,一個被稱爲萬一有沒有其他的處理程序和事件沒有被取消?
編輯3:爲了給你一個更好的主意,目前的做法是以下(名稱是由這個例子):
var eventCanceled=false;
function doTheEvent() {
$(someObject).triggerHandler("event");
if(!eventCanceled) defaultEventHandler();
}
//To be called inside the handlers to stop the default handler
function cancelTheEvent() {
eventCanceled=true;
}
我只是想擺脫這一點,並能直接使用triggerHandler
。
[優先級當多於一個的事件處理程序被綁定到一個元素(的可能的複製http://stackoverflow.com/questions/8779657/priority-when-more-than-一個事件處理程序是綁定到元素) –
不完全是,請注意,我正在討論隨機對象,而不是DOM元素。 – Gabriel
而不是有兩個相同名稱的事件名稱「」事件「''」事件「'你有沒有想過改成''默認值''和'」事件「' –