我的小提琴链接是
而且我不明白为什么当我推送button
它时会删除所有关注<li>
而不是仅删除选定<li>
的 by ID
?
问题是您将每个点击功能附加到所有按钮。通过使用选择器$('button')
,您可以选择每个按钮来附加您的点击处理程序。
您正在使用按钮重复绑定事件,这就是删除所有按钮的原因。你需要bind the event once
。$('button').click will bind the event to all button types
. 您不需要像以前那样重复它。
对所有按钮尝试这样的事情,
$('button').click(function () {
$(this).closest('li').remove();
});
发生这种情况是因为您将click
事件附加到页面上的所有按钮。每个新的事件绑定都会将新的处理程序附加到现有的处理程序上。因此,最终浏览器会读取您的代码,就像它是按以下方式编写的一样:
$('button').click(function() {
$('#16').remove();
$('#17').remove();
$('#19').remove();
$('#23').remove();
$('#25').remove();
});
...意思是,当您单击<button>
页面上的任何元素时,所有 ID为16
、17
、和的元素都将被删除。19
23
25
另一种方法是使用以下一次$(document).ready(function() { ... })
:
$('button').click(function() {
$(this).closest('li').remove();
});
演示:http: //jsfiddle.net/tBYdu/34/
每当您单击其中一个按钮时,都会触发所有脚本,因为您的选择器只是元素“按钮”。尝试为每个按钮分配一个 ID 并使用该 ID 触发正确的代码。
当您绑定事件时,它将找到 DOM 具有的所有当前元素,因此您的某些按钮将具有多次单击事件。
如果要删除按钮父级,则:
$('li button').click(function () {
$(this).parent().remove();
});
或使用.closest("li")
代替.parent()
试试看:http: //jsfiddle.net/tBYdu/30/
$('button').click(function() {
$(this).closest('li').remove();
});
发生这种情况是因为您将点击处理程序应用于所有按钮..
$('button')
将应用于 html 中存在的所有按钮。
试一试
$('ul').on('click','button', function(){
$(this).closest('li').remove();
});
修改您的选择器和处理函数,如下所示,
$('#4 button').click (function () {
$(this).parent().remove();
});
#4
身份证在哪里UL
演示:http: //jsfiddle.net/tBYdu/33/