2012-11-13 34 views
1

我有幾個對象正在偵聽change事件,但我需要它們以指定的順序觸發。你可以安排事件回調的泡泡順序嗎?

是否可以自定義jQuery中幾個綁定對象的泡泡順序?

+1

我相信他們會通過DOM向上冒泡。 – Shmiddty

+0

您可以設置一個示例來演示您想要發生的事情嗎? – Shmiddty

+0

沒有。它只是起泡。有可能寫一些東西來解決問題,但如果你告訴我們爲什麼需要按照你的特定順序進行,那會更好。 – PeeHaa

回答

1

不幸的是,你不能自定義事件泡泡順序。

爲了達到你想要的效果,我會推薦jQuery自定義事件

例子:

$("#YOURELEMENT").trigger('CUSTOMEVENT'); //create a new custom event 
$("#YOURELEMENT2").bind('CUSTOMEVENT',function(e){ ... }); //listen for new custom event 

這裏就可以了good tutorial

+1

因此,自定義事件會切換首先通過索引執行的操作。聰明的建築理念在這裏.. – Trip

1

據我所知,有一個處理程序數組存儲所有處理程序引用指定的功能。所以,當你永遠增加新功能的事件,它會在這個數組的末尾,這意味着類似下面的代碼:

$("SomeElement") 
.live(
    { 
     click: function() 
     { 
      // This is handler named A. 
      alert("A"); 
     } 
    } 
); 

$("SomeElement") 
.live(
    { 
     click: function() 
     { 
      // This is handler named B. 
      alert("B"); 
     } 
    } 
); 

B就後一個顯示"click"事件觸發。

但是,當你改變的地方:

$("SomeElement") 
.live(
    { 
     click: function() 
     { 
      // This is handler named B. 
      alert("B"); 
     } 
    } 
); 

$("SomeElement") 
.live(
    { 
     click: function() 
     { 
      // This is handler named A. 
      alert("A"); 
     } 
    } 
); 

B就前一個顯示"click"事件觸發。

您可以通過這種方式訂購添加處理程序,因爲JavaScript代碼在上下方向執行,我相信這是唯一的方法。

希望它有幫助。

乾杯