JQuery按ID删除LI元素

时间:2012-10-17 17:27:37

标签: jquery

我的小提琴链接

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

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

8 个答案:

答案 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 16171923和{ {1}}将被移除。

另一种方法是在25中使用以下一次:

$(document).ready(function() { ... })

DEMO: http://jsfiddle.net/tBYdu/34/

答案 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();
});

http://jsfiddle.net/tBYdu/29/

演示

答案 7 :(得分:0)

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

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

其中#4UL

的ID

DEMO: http://jsfiddle.net/tBYdu/33/