3 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
使用querySelectorAll和for循環(huán)的問(wèn)題在于,它為數(shù)組中的每個(gè)元素創(chuàng)建了一個(gè)全新的事件處理程序。
有時(shí)候,這正是您想要的。但是,如果您有許多元素,則創(chuàng)建單個(gè)事件處理程序并將其附加到容器元素可能會(huì)更有效。然后,您可以event.target用來(lái)引用觸發(fā)事件的特定元素:
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();
}
}
});
在此示例中,我們僅創(chuàng)建一個(gè)附加到該body元素的事件處理程序。每當(dāng)body點(diǎn)擊內(nèi)的元素時(shí),click事件就會(huì)冒泡到我們的事件處理程序中。

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
您必須使用querySelectorAll需要選擇帶有所述類的所有元素,這又querySelectorAll是一個(gè)數(shù)組,因此您需要對(duì)其進(jìn)行迭代并添加事件處理程序
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;
}
});
}
添加回答
舉報(bào)