2011-04-27 116 views
0

有人能向我解釋爲什麼jQuery的事件冒泡

var divdbl = $("div:first"); 
var i = 0; 

divdbl.change(function(){ 
    alert('change');  
}).click(); 

divdbl.click(function(){ 
    i++; 
    alert('click '+i); 
}).change(); 

行爲就像他們在呼喚自己,即使我不喜歡這樣

divdbl.click(function(){ 
    i++; 
    alert('click '+i); 
}).change(); 

divdbl.change(function(){ 
    alert('change');  
}).click(); 

它好像是它們自稱代替其他。

編輯

var divdbl = $("div:first"); 
var i = 0; 

divdbl.change(function(){ 
    alert('change');  
}); 

divdbl.click(function(){ 
    i++; 
    alert('click '+i); 
}).change().click(); 

我剛剛意識到我想要完成的是迫使他們負載 運行一次請問上面的代碼有意義嗎?

+0

你的問題很不清楚。你會得到什麼結果,結果是你期望的> – JohnFx 2011-04-27 03:27:53

+0

'divdbl.click(function(){})。click();'調用自己,但附加另一個事件會不會調用其他事件處理程序? – ianace 2011-04-27 03:32:41

+0

在通話本身中,「本身」是什麼意思? – JohnFx 2011-04-27 03:36:15

回答

0

嗯,首先,這是一個問題,因爲您在調用觸發器之前先調用change()處理程序。你想達到什麼目的?調用.change().click()將運行這些事件的功能。

編輯:

根據您最近更新了自己的問題:是的,那是預期會工作。加載時會調用.click和.change。

+0

1。你是指第一還是第二?2.我試着知道你是否可以通過附加另一個事件來調用另一個事件,即事件冒泡 – ianace 2011-04-27 03:23:00

+0

** 1。)**在第一個中,你調用'.click ()'存在之前。第二,你在調用'.change()'之前存在。 ** 2。)**啊。你分析哪部分代碼? – mattsven 2011-04-27 03:25:11

+0

** 1。)**所以這意味着如果我發出一個事件但沒有它的處理程序,它會執行它所附加的處理程序? **)調用'$('#id')。click(function(){...}).click();'會調用它自己,只是想如果有兩個處理程序因爲兩者都連接到相同的DOM元素 – ianace 2011-04-27 03:30:00