2012-02-12 58 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內沒有「空間」字符。它爲我工作。