我正在尝试动态地将列表项添加到列表中,然后通过单击该项删除它。删除事件似乎永远不会触发。但是,如果我在静态列表上使用相同的代码,它可以正常工作。我见过类似的解决方案,但它们不起作用。
参见jsFiddle: http://jsfiddle.net/Lc2bC/
<input id="status" type="text" placeholder="Status (tab or enter)">
<br/>
Dynamic List:
<ul id="statusList"></ul>
$('#status').keydown(function (e) {
if (e.which == 9 || e.which == 13) {
$('#statusList').html($('#statusList').html() + formatNewStatus(this.value));
this.value = "";
this.focus();
e.preventDefault();
}
});
$(function () {
$('#statusList li').click(function () {
alert('dynamicList');
$(this).remove();
})
});
答案 0 :(得分:6)
这是因为click()
函数仅在调用时绑定到dom中存在的元素。
live()
是较旧的技术,但已弃用,将来的版本将不再支持。
您需要使用的是on()
$(function () {
$('#statusList').on('click', 'li', function () {
alert('dynamicList');
$(this).remove();
});
});
答案 1 :(得分:2)
答案 2 :(得分:2)
$(function () {
$('#statusList').on("click", "li", function () {
alert('dynamicList');
$(this).remove();
})
});