我使用jquery所有選擇器從div(從隨機網站)獲取id。 問題在於點擊多次觸發。 如何可以只從點擊div獲得id?jquery所有選擇器 - 只有一次點擊div
$("*").click(function()
{
console.log('fire -> '+this.id+' ');
});
我使用jquery所有選擇器從div(從隨機網站)獲取id。 問題在於點擊多次觸發。 如何可以只從點擊div獲得id?jquery所有選擇器 - 只有一次點擊div
$("*").click(function()
{
console.log('fire -> '+this.id+' ');
});
事件觸發多次的原因是點擊事件正在冒泡到文檔。嘗試使用event.stopPropagation()
防止事件冒泡,
$("*").click(function(e)
{
e.stopPropagation()
console.log('fire -> ' + this.id);
});
事實上.... +1 :) –
@MilindAnantwar完美示範.. :) –
您需要使用StopPropogation()阻止事件的傳播史:
$("*").click(function(event)
{
event.stopPropogation();
console.log('fire -> '+this.id+' ');
});
這表明整個html元素。所以它只需要html。
您需要指定標籤。因爲你想要所有div的id。所以你需要這樣吧
$('div').click(function(){
//enter code here
});
你的問題是關於事件冒泡通過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 + ' ' : ''));
});
要注意,千萬不要用作爲選擇'*'尤其是綁定事件 –