答案 0 :(得分:3)
问题是您将每个点击功能附加到所有按钮。
通过使用选择器$('button')
,您可以选择每个按钮将您的点击处理程序附加到。
答案 1 :(得分:2)
您正在使用按钮重复绑定事件,这就是删除所有按钮的原因。您需要bind the event once
。 $('button').click will bind the event to all button types
。你不需要像你那样重复它。
对所有按钮尝试这样的事情,
<强> Live Demo 强>
$('button').click(function () {
$(this).closest('li').remove();
});
答案 2 :(得分:0)
这是因为您将click
个事件附加到页面上的所有按钮。每个新事件绑定都会将新处理程序附加到现有处理程序。所以最后浏览器会读取你的代码,就像它是用以下方式编写的那样:
$('button').click(function() {
$('#16').remove();
$('#17').remove();
$('#19').remove();
$('#23').remove();
$('#25').remove();
});
...意思是,当您点击页面上的所有<button>
元素时,所有元素都包含ID 16
,17
,19
,23
和{ {1}}将被移除。
另一种方法是在25
中使用以下一次:
$(document).ready(function() { ... })
答案 3 :(得分:0)
每次单击其中一个按钮时,所有脚本都会触发,因为您的选择器只是元素“按钮”。尝试为每个按钮分配一个ID,并使用ID来启动正确的代码。
答案 4 :(得分:0)
当你绑定事件时,它会找到DOM拥有的所有当前元素,因此你的一些按钮会有多次点击事件。
如果你想删除父按钮,那么:
$('li button').click(function () {
$(this).parent().remove();
});
或使用.closest("li")
代替.parent()
答案 5 :(得分:0)
试一试:http://jsfiddle.net/tBYdu/30/
$('button').click(function() {
$(this).closest('li').remove();
});
答案 6 :(得分:0)
这是因为您将点击处理程序应用于所有按钮..
$('button')
将应用于html中的所有按钮..
试一下
$('ul').on('click','button', function(){
$(this).closest('li').remove();
});
演示
答案 7 :(得分:0)
修改你的选择器和处理函数,如下所示,
$('#4 button').click (function () {
$(this).parent().remove();
});
其中#4
是UL