2010-05-28 174 views
7

概述問題jQuery的事件處理程序隊列

在jQuery中的,在該綁定的處理程序的順序是在其中它們將如果正在結合相同元件被執行的順序。

例如:

$('#div1').bind('click',function(){ 
// code runs first 
}); 

$('#div1').bind('click',function(){ 
// code runs second 
}); 

但是,如果我想第二個綁定代碼先運行什麼?

我目前的解決方案

目前,我的解決辦法是修改事件隊列:

$.data(domElement, 'events')['click'].unshift({ 
          type : 'click', 
          guid : null, 
          namespace : "", 
          data : undefined, 
          handler: function() { 
           // code 
          } 
         }); 

問題

有什麼潛在的問題我的解決方案?

我可以安全地使用null作爲guid的值嗎?

在此先感謝。

回答

1

有一個有趣的插件叫eventstack。它允許您將事件綁定到事件隊列的頂部或底部。我不知道你的問題有多普遍,或者你是否想要顛倒或任意排序堆棧中的事件,但插件可能會簡化你的任務。

如果您希望按照特定順序組裝隊列,可以嘗試使用this answer中建議的方法 - 構建可以相互觸發的自定義事件。

您的方法可能是最適合您的要求,但也許這些也是選項。

+0

謝謝。 由於我正在編寫一個插件,我不想要求用戶手動觸發我每次創建的自定義事件。我希望它是自動的。 事件堆棧也沒有幫助,因爲我不想顛倒堆棧,但只需將我的插件的事件放置在堆棧的開始位置即可。 – resopollution 2010-05-28 22:18:23