3 回答
TA貢獻1856條經驗 獲得超17個贊
使用querySelectorAll和for循環的問題在于,它為數組中的每個元素創建了一個全新的事件處理程序。
有時候,這正是您想要的。但是,如果您有許多元素,則創建單個事件處理程序并將其附加到容器元素可能會更有效。然后,您可以event.target用來引用觸發事件的特定元素:
document.body.addEventListener("click", function (event) {
if (event.target.classList.contains("delete")) {
var title = event.target.getAttribute("title");
if (!confirm("sure u want to delete " + title)) {
event.preventDefault();
}
}
});
在此示例中,我們僅創建一個附加到該body元素的事件處理程序。每當body點擊內的元素時,click事件就會冒泡到我們的事件處理程序中。
TA貢獻1951條經驗 獲得超3個贊
您必須使用querySelectorAll需要選擇帶有所述類的所有元素,這又querySelectorAll是一個數組,因此您需要對其進行迭代并添加事件處理程序
var deleteLinks = document.querySelectorAll('.delete');
for (var i = 0; i < deleteLinks.length; i++) {
deleteLinks[i].addEventListener('click', function (event) {
event.preventDefault();
var choice = confirm("sure u want to delete?");
if (choice) {
return true;
}
});
}
添加回答
舉報
