2013-03-03 187 views
0

有沒有辦法優先考慮事件?所以在下面的例子中,它總是首先觸發div1事件,但我想首先觸發div2事件。我可以將div2移到div1 div之外,但由於其他事情(包括其他情況,如果這是最佳選擇,我會這樣做),它會包含更多的工作。jQuery:優先考慮事件

另外,這是一種現代化的方法嗎?我知道人們談論使用.on over .live,但我不認爲.click有問題嗎?

<div id="div1"> 
    Various content etc. 
    <div id="div2">XXclickable content hereXX</div> 
</div> 

$('#div1').click(function(e) { 
    alert("clicked 1"); 
}); 
$('#div2').click(function(e) { 
    alert("clicked 2"); 
}); 
+0

這應有助於:http://api.jquery.com/event.stopPropagation/ – elclanrs 2013-03-03 05:02:25

+1

我認爲[event.stopPropagation()](http://api.jquery.com/event.stopPropagation /)是你需要的......或者測試你的光標下的當前目標。 – yckart 2013-03-03 05:03:58

+0

謝謝,但我看不出有什麼幫助。我想首先發射div2,但它首先發射div1。如果我在div2停止它,它永遠不會觸發div1。也許是一個'忽略事件',但不是一站式全部事件。不過謝謝。 – user2026796222222222 2013-03-03 05:04:49

回答

0

我想這個對的jsfiddle,與現有的jQuery每一個版本,在兩個Firefox和Chrome和div2事件在您的示例代碼總是首先開火。從我對均勻傳播/冒泡的理解來看,情況總是如此。

jsfiddle

事件代表團可能會是一個更好的主意不管。也就是說,不是首先將事件處理程序直接附加到div2,而是將其他邏輯添加到div1處理程序並檢查event.target以獲取調用者的身份。

jsfiddle