2016-06-10 116 views
1

比方說,我們有這樣的:點擊事件jQuery的控制命令

$(document.body).on("click", "div", function() { 
    console.log(1); 
}); 

$("div").on("click", function() { 
    console.log(2); 
}); 

現在,當我點擊<div>,輸出爲:

2 
1 

有沒有辦法有相反的順序,因爲我不能修改或選擇更改順序的事實?

編輯

我現在的解決方法是一個setTimeout(),但我不希望有這樣的,因爲它創建醜陋的毛刺。

+0

只是換兩個事件的console.log();) –

+0

我認爲,第二個會永遠火首先,因爲它綁定到'div'。這意味着用戶點擊'div',然後事件就會起泡並觸及綁定到主體的第一個事件。 –

回答

0

你說什麼有關修改回調函數

$(document.body).on("click", "div", function() { 
    setTimeOut(function(){ console.log(1);},5}); 
}); 

$("div").on("click", function() { 
    console.log(2); 
}); 
+0

是的,這就是我現在有,但它創造醜陋的毛刺... – kraftwer1

1

事件傳播了低谷DOM,所以有強迫身體上點擊開火DIV點擊之前確實沒有切實可行的辦法。然而,一個簡單的解決方法,這一問題將以下內容:

var somethingOrOther = function() { 
    console.log(1); 
} 

$(document.body).on("click", "div", function() { 
    somethingOrOther(); 
}); 

$("div").on("click", function(event) { 
    event.stopPropagation(); 
    somethingOrOther(); 
    console.log(2); 
}); 

event.stopPropagation();確保點擊不會泡沫進一步與DOM和身體上的點擊不會觸發,但點擊股利只有當。