点击jQuery中的元素会导致气泡达到正文。如果我们有一个绑定到正文的点击处理程序来显示警报,那么单击任何元素都会触发正文并触发警报。我的问题是,有什么方法可以知道身体警报是由于直接点击正文而触发的,还是由于气泡直到身体而触发的点击。有什么方法可以检查泡沫是否触发了点击?
29
A
回答
51
比较event.target
至this
。 this
始终是处理程序绑定的事件; event.target
始终是事件发生的元素。
$(document.body).click(function(event) {
if (event.target == this) {
// event was triggered on the body
}
});
在元素的您知道是一个文档中是唯一的情况下(基本上,只是body
)你也可以检查nodeName
this
的:
$(document.body).click(function(event) {
if (event.target.nodeName.toLowerCase() === 'body') {
// event was triggered on the body
}
});
你要做toLowerCase()
因为案件nodeName
在浏览器中不一致。
最后一个选项是比较一个ID,如果你的元素有一个,因为这些也必须是唯一的:
$('#foo').click(function(event) {
if (event.target.id === 'foo') {
// event was triggered on #foo
}
});
+0
感谢您的解释。 – Pinkie 2011-05-19 19:15:55
+0
男人,非常感谢! :) – 2015-02-05 18:27:51
5
你可以查阅一下与单击event.target
:
$(something).click(function(e){
alert(e.target)
})
2
“事件”参数传递给处理程序有一个“目标”属性,它是指是事件的直接目标的元素。您可以检查该属性以查看它是否为<body>
元素。
请注意,jQuery“.delegate()”工具可用于为您检查。
相关问题
- 1. 什么是“合并泡沫”?
- 2. 有什么方法可以检查源是否已订阅?
- 3. 有什么方法可以检查警报是否已设置?
- 4. 检查鼠标点击是否触发点击事件?
- 5. 什么是泡沫排序擅长?
- 6. 泡沫排序除了第一个点
- 7. jQuery - 检查是否触发了.noconflict
- 8. jquery - 插件泡沫点击事件
- 9. 检查什么触发了WindowClosing事件
- 10. 如何检测'Enter'是否触发了点击事件?
- 11. 检查我是否点击了datagridview行
- 12. 有什么方法可以检测web api是否已更新?
- 13. 有什么方法可以检查麦克风是否有输入?
- 14. 有什么方法可以知道下载是否发生
- 15. 我可以调用泡沫的方法动态
- 16. 在python中检查泡沫版本
- 17. 有什么方法可以检查设备是否支持手写笔输入?
- 18. 如何检查触发器是否被点击?
- 19. 检查模糊是否由点击div触发
- 20. 检查点击哪个链接的最佳方法是什么?
- 21. 蟒蛇无法访问泡沫方法
- 22. 是否可以在Systray通知泡泡内放置“可点击链接”?
- 23. 有没有什么方法可以检测到braintree.js表单的提交点击?
- 24. 点击方法没有触发
- 25. 检查视窗是否可见的最佳方法是什么?
- 26. 什么是检查Web API是否可用的好方法?
- 27. 什么是检查Excel OLE是否可用的正确方法?
- 28. 有什么方法可以根据查询结果触发oracle查询
- 29. 以编程方式检查年份是否最有效的方法是什么
- 30. 如何检查Xpath是否可点击?
不管你做什么,要警惕stopPropagation的。这将打破所有'.live'调用。 – 2011-05-19 18:23:58