gpt4 book ai didi

javascript - 删除并读取元素后,子处理程序消失

转载 作者:行者123 更新时间:2023-12-03 04:06:05 25 4
gpt4 key购买 nike

我尝试在两个 HTML 列表之间切换元素。在第一个列表中,新元素必须位于列表末尾。我使用 jQuery .appendTo()添加元素的方法和 .remove()删除一个元素。在第二个列表中,每个元素都必须保留在原位,因此我使用 .hide().show() .

这是我的 HTML 列表:

List 1
<ul id="l1"></ul>
List 2
<ul id="l2"></ul>

我的列表之一的元素如下所示:<li>Element - <span>remove</span></li>

我将一个处理程序添加到 span从列表中删除元素并将其添加到另一个列表中。

let ul1 = $("ul#l1"),
ul2 = $("ul#l2"),
lis = ["ga", "bu", "zo", "meu"];


lis.forEach(function(e){
let li1 = $("<li>" + e + "- </li>"),
sp1 = $("<span>remove</span>"),
li2 = $("<li>" + e + "- </li>"),
sp2 = $("<span>hide</span>");

sp1.appendTo(li1);
li1.appendTo(ul1);

sp2.appendTo(li2);
li2.appendTo(ul2);
li2.hide();

// switching the element from the list 1 to the list 2
sp1.on("click", function(){
li2.show();
li1.remove();
});

// switching the element from the list 2 to the list 1
sp2.click(function(){
li2.hide();
li1.appendTo(ul1);
});
});

问题是,将元素重新添加到第一个列表后,处理程序似乎消失了。我以与第一次相同的方式添加此元素。

为什么有.click()处理程序第二次消失?是.remove()方法删除子对象的处理程序?

最佳答案

根据 jquery 文档

https://api.jquery.com/remove/

all bound events and jQuery data associated with the elements are removed. To remove the elements without removing data and events, use .detach() instead.

关于javascript - 删除并读取元素后,子处理程序消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44549863/

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