我正在做事件定位實驗並在香草JS和jQuery中比較它的執行情況。我很驚訝,結果是不同的;它在香草JS中取得了成功,但在jQuery中卻不成功。如果我沒有弄錯,jQuery中的事件定位代碼是$(event.target)
,而vanilla JS中的代碼是event.target
。在我的實驗中,我只在<body>
標籤內有一個按鈕,並且每當它被某個事件定位時,瀏覽器都會提示「按鈕元素是目標」,否則它將是「窗口本身是有針對性的」。但是,即使目標元素是按鈕,警報通知也只是「窗口本身有針對性」。這裏是我的代碼:在香草JS和jQuery中針對事件定位
香草JS
let $ = document.querySelector.bind(document);
window.onclick = function(event) {
if(event.target != $('button')) {
alert('window itself is targeted');
} else {
alert('button element is targeted');
}
}
jQuery的
$(window).on('click', function(event) {
var $eventTarget = $(event.target);
if($eventTarget != $('button')) {
alert('window itself is targeted');
} else {
alert('button element is targeted');
}
});
在jQuery代碼,我試圖用event.target
更換$(event.target)
,看看它的執行將類似於香草JS,但沒有任何改變。它是我的代碼的語法,使它失敗或有什麼其他錯誤,我只是沒有注意到。我希望有人能夠向我指出。
感謝很多:) – jst16
所以'是()'方法是解決 – jst16
@ jst16它的一個解決方案(其中你比較的元素的HTML標籤) 。您還可以比較類,ID或任何其他屬性 –