點擊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