2013-04-11 56 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