通常附接的事件處理程序的元素時,則可以使用傳遞到處理函數,像這樣的第一個參數的.TARGET構件訪問元素:如何從處理程序中獲取事件處理程序所附的元素?
button.on('click', function(e) {
alert(e.target);
});
這將返回按鈕元件。
我想了解的問題是,當你有一個事件處理函數的內部元素,事件的目標是內部元素,而不是附加處理程序的內部元素。當我的事件處理程序需要訪問附加到外部元素的數據時,這是一個問題。
<div class="outer" data-tag="i-need-this-data">
<b>Click Me</b>
</div>
利用該標記,一個事件附着到.outer
和點擊Click Me
將導致event.target作爲<b>
代替<div>
。這是有問題的,因爲我必須使用變通方法來檢查外部類,爬上DOM直到看到.outer
,然後以這種方式訪問數據。此行爲的一個示例可以在此JSFiddle中看到:https://jsfiddle.net/qce23qhw/
JSFiddle中的第一個示例顯示了不希望的行爲,單擊內部正方形會導致event.target成爲內部正方形。第二個示例顯示了我的解決方法的實現。
是否有一種更簡潔的方式從處理程序內部獲取處理程序所連接的元素,而不是單擊的元素?
我應該補充一點,我的目標是重用處理函數,因此它看起來像'element.on('click',handleClick)',因此元素在'handleClick'內是未定義的。 –
@StephenSmith更新了我的回答 – FrankerZ
太棒了,我不能相信我忘記了這個。謝謝! –