gpt4 book ai didi

javascript - 单击事件不会在新创建的列表项上触发

转载 作者:行者123 更新时间:2023-11-28 16:24:57 25 4
gpt4 key购买 nike

我有两个列表,当您单击第二个列表时,第一个列表会删除第一个项目并添加到第二个列表,但是当我单击新创建的列表项时,它不会触发,这是为什么。 jsFiddle demo

$('#SearchList li a').bind("click", function () {
var $this = $(this).unwrap('<a href="#"></a>').remove().text();

var $that = $('#Search li:first').remove().text();

$('<li>' + $this + '</li>').insertBefore('#Search li:first')

$('#SearchList').append('<li><a href="#">' + $that + '</a></li>');
});

<ul id="Search">
<li>Electronics</li>
<li>Image</li>
</ul>

<ul id="SearchList">
<li><a href="#">Interests</a></li>
<li><a href="#">Entertainment</a></li>
<li><a href="#">Clothing</a></li>
<li><a href="#">Pharmacy</a></li>
<li><a href="#">Home & Garden</a></li>
</ul>

最佳答案

.bind() 仅影响 DOM 中已有的元素,您想使用 .delegate().on() (如果您使用的是 jQuery 1.7+):

$('#SearchList').on("click", " li a", function () {
var $this = $(this).unwrap('<a href="#"></a>').remove().text();

var $that = $('#Search li:first').remove().text();

$('<li>' + $this + '</li>').insertBefore('#Search li:first')

$('#SearchList').append('<li><a href="#">' + $that + '</a></li>');
});

注意:.live() 自 jQuery 1.7 起已被弃用,因此最好使用 .on().delegate( )

这是上述解决方案的 jsfiddle(使用 jQuery 1.7):http://jsfiddle.net/jasper/pgwdv/

一些文档链接:

关于javascript - 单击事件不会在新创建的列表项上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319531/

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