【发布时间】:2019-10-21 04:18:42
【问题描述】:
我的页面有问题,它有一个创建新 div 的功能(像 trello 这样的卡片),我可以将它们从“生成器”字段拖到工作区。这些卡片上有一些带有附加点击事件的按钮。生成器代码正确地附加了卡片的不同子项,但问题是点击事件在生成的卡片上不起作用,只有当我已经在 html 中手动制作了这个 div 时。我看到了一些解决方案,但它们都涉及 jQuery,如何在生成时分配点击事件以便它们工作?
我看到了一些解决方案,但它们都涉及 jQuery,如何在生成时分配 clickevents 以便它们工作?
// Get the modal
var modal = document.getElementById('myModal');
// Get the button that opens the modal
var btns = document.getElementsByClassName("comment");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];
// When the user clicks the button, open the modal
for (var i = 0; i < btns.length; i++) {
btns[i].onclick = function() {
modal.style.display = "block";
}
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
//Generator code to make new cards
document.getElementById("newCombBtn").addEventListener("click", function() {
var hex = document.createElement("div");
hex.className = "hexagon";
var like = document.createElement("button");
like.innerHTML = "♥";
like.id = "likebtn";
var del = document.createElement("button");
del.innerHTML = "⨯";
del.id = "deletebtn";
var inp = document.createElement("input");
inp.className = "input";
inp.placeholder = "Title";
var com = document.createElement("button");
com.innerHTML = "≡";
com.className = "comment";
hex.appendChild(like);
hex.appendChild(del);
hex.appendChild(inp);
hex.appendChild(com);
document.getElementById("generatorField").appendChild(hex);
});
所以总结一下,当我像上面那样生成新的 div 时,我需要添加点击事件以显示模式。
任何帮助都会很棒!
【问题讨论】:
-
接受的答案不是好的做法,您应该将事件侦听器作为委托添加到父元素。 gomakethings.com/…
标签: javascript css addeventlistener dom-events