appendChild之后的addEventListener

Leo*_*Leo 6 javascript dom

我创建一个元素,eltTooltipdocument.createElement等,并把它添加到DOM这样的(idTooltip包含ideltTooltip):

document.body.appendChild(eltTooltip);
var addedElt = document.getElementById(idTooltip);
addedElt.addEventListener("click", function(){...});
Run Code Online (Sandbox Code Playgroud)

是否click保证在此处添加事件,或者DOM可能尚未准备好?

我能以更好的方式做到这一点吗?(页面很久以前window.onload就被加载了,所以无法使用.我不能在这里使用jQuery.)

Dan*_*mms 8

你的方式工作得非常好但是在使用事件监听器添加到DOM之前附加事件监听器可能更好eltTooltip.这样可以避免从DOM中获取元素.

演示

var idTooltip = 'test';
var eltTooltip = document.createElement('div');
eltTooltip.innerHTML = "test"
eltTooltip.setAttribute('id', idTooltip);
eltTooltip.addEventListener("click", function () {
    alert('click');
});

document.body.appendChild(eltTooltip);
Run Code Online (Sandbox Code Playgroud)

  • 主要问题是您使用`document.getElementById` 再次获取元素。将 `addEventListener` 添加到 DOM 更像是代码清洁的事情(在添加元素之前完成弄乱元素),如果你在调用 `appendChild` 之后附加它也应该工作。 (2认同)