2013-04-11 61 views
0

我正在开发DOM检查器书签。我需要用户能够点击页面中的任何内容,因此我必须使用通用选择器(*)将点击事件附加到。但是,当通过此选择器单击某个项目时,我将返回选定的项目加上每个父项。我如何获得所选项目,以便我可以使用该项目?在点击事件中使用通用选择器(*)来选择仅被点击而不是父母

$(document).on("click", "*", function() { 
    alert(this); 
}); 

回答

2

“我需要的用户可以点击页面中的任何东西,所以我必须使用通用选择器(*)以附加点击事件“。

您不需要通用选择器,事实上,您根本不需要第二个参数来指定选择器。当文件接收click事件可确定事件开始使用这些元素event.target property

$(document).on("click", function(event) { 
    // event.target is the element you care about 
    alert(event.target.id); // or whatever 
    ... 

}); 
+0

你是对的,但需要注意的是(在两种情况下),该OP的事件处理程序必须在任何注册其他事件处理程序,以确保它在任何事件中获得第一口。 – Alnitak 2013-04-11 14:01:50

+0

@Alnitak - 即使上面的代码是首先注册的,它仍然不会(必然)第一口咬人,因为在绑定到文档的委托处理程序之前总是不会调用直接绑定到元素的处理程序? – nnnnnn 2013-04-11 14:04:26

+0

你的意思是一个'onclick =“...”'处理程序?是的,尽管可以删除这些内容,但可以添加此内容,然后使用addEventListener重新插入原始内容。 – Alnitak 2013-04-11 14:06:36