1

我的小提琴链接是

http://jsfiddle.net/tBYdu/18/

而且我不明白为什么当我推送button它时会删除所有关注<li>而不是仅删除选定<li>的 by ID

4

8 回答 8

3

问题是您将每个点击功能附加到所有按钮。通过使用选择器$('button'),您可以选择每个按钮来附加您的点击处理程序。

于 2012-10-17T17:30:26.687 回答
2

您正在使用按钮重复绑定事件,这就是删除所有按钮的原因。你需要bind the event once$('button').click will bind the event to all button types. 您不需要像以前那样重复它。

对所有按钮尝试这样的事情,

现场演示

$('button').click(function () {
  $(this).closest('li').remove();
});
于 2012-10-17T17:30:06.237 回答
0

发生这种情况是因为您将click事件附加到页面上的所有按钮。每个新的事件绑定都会将新的处理程序附加到现有的处理程序上。因此,最终浏览器会读取您的代码,就像它是按以下方式编写的一样:

$('button').click(function() {
    $('#16').remove();
    $('#17').remove();
    $('#19').remove();
    $('#23').remove();
    $('#25').remove();
});​

...意思是,当您单击<button>页面上的任何元素时,所有 ID为1617、和的元素都将被删除。192325

另一种方法是使用以下一次$(document).ready(function() { ... })

$('button').click(function() {
    $(this).closest('li').remove();
});​

演示:http: //jsfiddle.net/tBYdu/34/

于 2012-10-17T17:30:47.457 回答
0

每当您单击其中一个按钮时,都会触发所有脚本,因为您的选择器只是元素“按钮”。尝试为每个按钮分配一个 ID 并使用该 ID 触发正确的代码。

于 2012-10-17T17:31:51.420 回答
0

当您绑定事件时,它将找到 DOM 具有的所有当前元素,因此您的某些按钮将具有多次单击事件。

如果要删除按钮父级,则:

$('li button').click(function () {
  $(this).parent().remove();
});

或使用.closest("li")代替.parent()

于 2012-10-17T17:31:52.603 回答
0

试试看:http: //jsfiddle.net/tBYdu/30/

$('button').click(function() {
    $(this).closest('li').remove();        
});
于 2012-10-17T17:32:10.183 回答
0

发生这种情况是因为您将点击处理程序应用于所有按钮..

$('button')将应用于 html 中存在的所有按钮。

试一试

$('ul').on('click','button', function(){
   $(this).closest('li').remove();
});

演示在http://jsfiddle.net/tBYdu/29/

于 2012-10-17T17:32:27.890 回答
0

修改您的选择器和处理函数,如下所示,

$('#4 button').click (function () { 
    $(this).parent().remove();
});

#4身份证在哪里UL

演示:http: //jsfiddle.net/tBYdu/33/

于 2012-10-17T17:33:07.963 回答