gpt4 book ai didi

JavaScript : how to re-attach the same event listener to a element reppeared?

转载 作者:行者123 更新时间:2023-11-28 17:40:50 25 4
gpt4 key购买 nike

在我的代码中,我有一个 h1 容器,里面有 h1 元素,如下所示:

<div id="container_h1"><h1 id="h1">Title H1</h1></div>

然后,我将一个事件监听器附加到 h1 元素,以便在用户单击 h1 元素时提醒 h1 文本:

var h1 = document.getElementById("h1");
h1.addEventListener(
"click",

function()
{
alert(h1.innerHTML);
},

false
);

然后,我有 2 个用于删除和插入 h1 元素的按钮,如下所示:

<input type="button" value="remove H1" onclick="remove_h1();">
<input type="button" value="insert H1" onclick="insert_h1();">

//container_h1 element :
var container_h1 = document.getElementById("container_h1");

//Remove h1 :
function remove_h1()
{
container_h1.innerHTML = "";
}

//Re-appear h1 :
function insert_h1()
{
container_h1.innerHTML = '<h1 id="h1">Title H1</h1>';
}

问题:

当我通过单击“删除 H1”按钮使 h1 元素消失,然后通过单击“插入 H1”按钮使 h1 元素重新出现,然后单击 h1 元素,h1.addEventListerner代码中没有任何效果,不会触发任何警报

那么当 h1 元素重新出现时,如何将相同的事件监听器重新附加到 h1 元素?

谢谢。

最佳答案

而不是 h1.addEventListener(...)添加

document.body.addEventListener('click', function(element) {
if (element.target.nodeName == 'H1') {
// your code
}
})

因此,您将事件监听器绑定(bind)到 body而不是h1 。问题是你的h1.addEventListener(...) 应用于当前 DOM 中现有的 <h1>元素,但不适用于动态创建的元素。

http://www.theappguruz.com/blog/dynamic-event-binding-demo-jquery

In jQuery, how to attach events to dynamic html elements?

关于JavaScript : how to re-attach the same event listener to a element reppeared?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47970992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com