附加的节点不会触发JavaScript事件
我有一份清单,里面有一些插槽。通过客户端的一些操作,通过附加的节点不会触发JavaScript事件,javascript,html,events,Javascript,Html,Events,我有一份清单,里面有一些插槽。通过客户端的一些操作,通过appendChild函数将新项目添加到这些插槽中 追加之后,需要将事件侦听器添加到新元素中,因为最初创建事件侦听器时它不存在。追加之后,需要将事件侦听器添加到新元素中,因为它在最初创建事件侦听器时不存在。在创建新构造的元素后,需要将处理程序添加到该元素中 var items = document.querySelectorAll(".item"); function attachMouseOverHandler(element) {
appendChild
函数将新项目添加到这些插槽中
追加之后,需要将事件侦听器添加到新元素中,因为最初创建事件侦听器时它不存在。追加之后,需要将事件侦听器添加到新元素中,因为它在最初创建事件侦听器时不存在。在创建新构造的元素后,需要将处理程序添加到该元素中
var items = document.querySelectorAll(".item");
function attachMouseOverHandler(element) {
element.addEventListener("mouseover", mouseOverHappened);
}
items.forEach(attachMouseOverHandler);
function addNewElement(element) {
attachMouseOverHandler(element);
}
创建新构造的元素后,需要将处理程序添加到该元素中
var items = document.querySelectorAll(".item");
function attachMouseOverHandler(element) {
element.addEventListener("mouseover", mouseOverHappened);
}
items.forEach(attachMouseOverHandler);
function addNewElement(element) {
attachMouseOverHandler(element);
}
下面是一个使用单个延迟事件侦听器的解决方案,因此您不必动态添加新的事件侦听器:
document.getElementById('letters').addEventListener('mouseover',函数(事件){
常量元素=event.target;
如果(!element.matches('.item'))返回;
//东西
log(element.textContent.trim());
})
福
我不匹配。项目
酒吧
这里有一个使用单个延迟事件侦听器的解决方案,因此您不必动态添加新的事件侦听器:
document.getElementById('letters').addEventListener('mouseover',函数(事件){
常量元素=event.target;
如果(!element.matches('.item'))返回;
//东西
log(element.textContent.trim());
})
福
我不匹配。项目
酒吧
添加即时事件时,该项不存在。。它没有添加事件。使用延迟/冒泡事件(即查看jQuery的功能)或将事件添加到每个[新创建的]项中。我还认为,您应该将事件显式添加到新创建的元素中。因此,添加即时事件时,该项不存在。。它没有添加事件。使用延迟/冒泡事件(即查看jQuery的功能)或将事件添加到每个[新创建的]项中。我还认为,您应该显式地将事件添加到新创建的元素中。