2012-02-12 57 views
10

我有一个动态列表,它看起来像这样:从列表中删除特定元素的jQuery

<ul> 
<li class="border" id="tl_1">Text1</li> 
<li class="border" id="tl_2">Text2</li> 
<li class="border" id="tl_3">Text3</li> 
</ul> 

的列表可以有不止这三项目。

当有人点击一个特定的按钮时,我希望“tl_2”将从列表中删除。我试了一下蒙山这些JQuery的命令,但其中不进行工作:

$('#tl_2').remove(); 

$('li').find('tl_1').remove(); 

我怎样才能解决这个问题?

+1

显示你所尝试的,它应该已经工作... – gdoron 2012-02-12 14:02:30

+0

请注意,没有必要通过'id'查找元素。'id'是唯一的 – gdoron 2012-02-12 14:07:16

+0

@Torben,当你说'dynamic'时,你的意思是列表项是通过某种请求动态填充的,可能*在你的问题中的代码已经运行之后? – 2012-02-12 14:07:18

回答

-1

您必须在其他地方发生错误,因为您拥有just works

请检查您的错误控制台。

虽然你的第二个例子应该是:

$('ul').find('#tl_2').remove(); // but this isn't really needed since we are selecting by id. So just go for the first example which is faster. 
+2

也许多个元素具有相同的ID,在这种情况下,只有第一个元素会被删除。 ](http://jsfiddle.net/AF7jw/3/) – 2012-02-12 14:06:56

+0

@ShadowWizard好的通话,好的OP你在DOM中有多少次相同的ID? – PeeHaa 2012-02-12 14:08:05

+0

OP不会在这里发表评论的通知,发表评论在他的问题,所以他得到通知,并希望回答。:) – 2012-02-12 14:13:44

10

你可能有一些愚蠢的错误,它应该工作:

$('#buttonId').click(function(){ 
     $('#tl_2').remove(); 
    }); 

注意,没有必要去“找”由id元素。 id是唯一的。

$('li').find('tl_1').remove(); // And you were missing the # anyway... 

确保每个id只有一个元素。 ID就像ID ...你可以只有一个具有相同的值。

每个id值只能在文档中使用一次。如果多个元素被分配了相同的ID,那么使用该ID的查询将仅选择DOM中第一个匹配的元素。不过,这种行为不应该依赖。具有多个使用相同ID的元素的文档无效。

+0

它*非常愚蠢 - 我忘了'#'符号。 – ashes999 2013-06-21 21:31:12

15

您可能有多个具有相同ID的元素。

您不必在所有使用ID的情况下,要通过索引中删除他们,你可以使用.eq()方法:

$("#btnRemove").click(function() { 
    $("#myList li").eq(1).remove(); 
}); 

这将删除第二个列表项每一次点击。

Live test case

1

我想你并没有向我们展示你的代码的一部分,因为我怀疑你正试图动态生成该ID,这意味着你也动态地设置它。你必须确保有哪些可能会一团糟事情了......按照jQuery文档

$('#tl_2').remove(); 

作品的ID内没有“空间”字符。它为我工作。