我使用jquery all选择器从div(来自随机网站)获取id。 问题是点击多次触发。 我是如何从点击div获得id的?
$("*").click(function()
{
console.log('fire -> '+this.id+' ');
});
答案 0 :(得分:4)
多次触发事件的原因是点击事件正在冒泡到文档。尝试使用event.stopPropagation()
来防止事件冒泡,
$("*").click(function(e)
{
e.stopPropagation()
console.log('fire -> ' + this.id );
});
<强> Demo 强>
答案 1 :(得分:1)
您需要使用StopPropogation()来停止事件的传播:
$("*").click(function(event)
{
event.stopPropogation();
console.log('fire -> '+this.id+' ');
});
答案 2 :(得分:0)
这表示整个html元素。所以它只采取HTML。
您需要指定标签。因为你想要所有div的id。所以你需要像这样对
$('div').click(function(){
//enter code here
});
答案 3 :(得分:0)
您的问题是关于通过DOM冒泡的事件。那就是说,你的选择器是你能得到的最差的,将事件绑定到DOM中的绝对所有元素。更好的方法是将事件委托给文档(或BODY)级别,如下所示:
$(document).click(function (e) {
console.log('fire -> ' + e.target.id + ' ');
});
如果点击的元素没有ID,但您仍然想知道最近点击的容器(如果有的话,包括反正元素本身),则可以使用:
$(document).click(function (e) {
console.log('fire -> ' + ($(e.target).closest('[id]').length ? $(e.target).closest('[id]')[0].id + ' ' : ''));
});