因此,我想要弄清楚我的頁面的哪個部分已被點擊。不能保證所有元素都在頁面上,這意味着我需要使用類似jquery delegate的東西。在DOM中的所有元素上附加單擊事件的事件處理程序
這樣做的一種方法是迭代DOM中的所有元素,然後爲每個元素附加一個事件處理程序 - 但這樣會很慢並且很複雜 - 每次新增html時都會動態添加,我必須重新 - 附加所有的處理程序,或找出已添加的html的子集。
另一種方法是使用事件冒泡 - 所以在事件添加事件處理程序的文檔,或身體並依靠冒泡
像這樣
$('body').delegate('div', 'click', function(e){
dummyId++;
console.log(e);
console.log(e.currentTarget);
console.log("=====");
});
然而,使用這種後代碼,當我點擊我的頁面上的按鈕時,我得到圍繞按鈕的div,而不是實際的按鈕。換句話說,上述過於具體。此外,我覺得原來的選擇器應該是文檔,而不是身體標籤。
要清楚,我想知道什麼時候在我的頁面上點擊了任何元素 - 我該怎麼做?
感謝
所以我想這個代碼。對
$(document).on('click', function(e){
console.log("EVENT DUMMY ID");
console.log(e.target);
console.log("=====");
});
然而,當我在我的應用程序上的按鈕點擊,沒有被觸發 - 當我點擊其他元素,控制檯運行日誌。
我知道這可能很難回答,沒有更多的上下文 - 你還需要什麼?
請勿使用基於選擇器的委派。只要將一個處理程序綁定到'document',並檢查'e.target'。這將是最深入點擊的元素。 '$(document).on(「click」,function(e){console.log(e.target.nodeName);})' –
on can not work - I dynamic append html elements – praks5432
Before you say it can not work , 嘗試一下。沒有理由它不適用於動態創建的元素,假設我已經正確理解了您想要最深入點擊的元素。 –