2011-04-27 111 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