2014-05-23 59 views
1

我使用jquery所有選擇器從div(從隨機網站)獲取id。 問題在於點擊多次觸發。 如何可以只從點擊div獲得id?jquery所有選擇器 - 只有一次點擊div

$("*").click(function() 
{ 
    console.log('fire -> '+this.id+' '); 
}); 
+0

要注意,千萬不要用作爲選擇'*'尤其是綁定事件 –

回答

4

事件觸發多次的原因是點擊事件正在冒泡到文檔。嘗試使用event.stopPropagation()防止事件冒泡,

$("*").click(function(e) 
{ 
    e.stopPropagation() 
    console.log('fire -> ' + this.id); 
}); 

Demo

+2

事實上.... +1 :) –

+1

@MilindAnantwar完美示範.. :) –

1

您需要使用StopPropogation()阻止事件的傳播史:

$("*").click(function(event) 
{ 
    event.stopPropogation(); 
    console.log('fire -> '+this.id+' '); 
}); 

FIDDLE DEMO

0

這表明整個html元素。所以它只需要html。

您需要指定標籤。因爲你想要所有div的id。所以你需要這樣吧

$('div').click(function(){ 
    //enter code here 
}); 
0

你的問題是關於事件冒泡通過DOM。這就是說,你的選擇器是你可以獲得的最差的選擇器,將事件綁定到DOM中的所有元素。更好的方式是委託事件記錄(或機構)的水平,這樣的事情:

$(document).click(function (e) { 
    console.log('fire -> ' + e.target.id + ' '); 
}); 

如果點擊的元素沒有ID,但仍想知道最近的容器點擊(如果有的話,幷包括反正元素本身)與ID,您可以使用:

$(document).click(function (e) { 
    console.log('fire -> ' + ($(e.target).closest('[id]').length ? $(e.target).closest('[id]')[0].id + ' ' : '')); 
});