2012-08-01 85 views
4

是否有可能使用JavaScript從ul中動態刪除幾個li元素,並給定li元素的id?從ul中刪除li元素

有關實際問題的更新:

我有以下列表。

<ul id="attributes" data-role="listview"> 
    <li id="attrib01">Attribute1</li> 
    <li id="attrib02">Attribute2</li> 
    <li id="attrib03">Attribute3</li> 
    <li id="attrib04">Attribute4</li> 
    <li id="attrib05">Attribute5</li> 
</ul> 

一個Ajax請求/響應後,如果一個特定的屬性是「不確定的」,我想從列表中刪除。

if(typeof data.attrib1 === "undefined") 
    $("#attrib01").remove(); 

我確定我收到了正確的ajax響應。所以,現在的問題是,當我刪除attrib4時,attrib [1-3]也被刪除。任何想法爲什麼這可能會發生?

+0

我試過$(「#id-of-li-element」)。remove()。這將刪除列表中的所有li元素。 – Ashwin 2012-08-01 00:51:52

+0

如果你把li的實際id作爲你的jquery選擇器,它不會刪除所有的lis。請包括您嘗試過的代碼示例。 – 2012-08-01 00:53:18

+0

所以你使用jQuery?你看過文檔嗎?無論如何,該代碼應該只刪除一個元素。你在重複使用ID嗎? UL上的這個ID而不是LI? – 2012-08-01 00:53:21

回答

0

這將使li元素無形:

document.getElementById("id_here").style.visibility = "hidden"; 

免責聲明:他們仍然會在DOM

要從DOM元素使用jQuery的.remove()方法:

$("#id_here").remove(); 

http://api.jquery.com/remove/

15

試試

var elem = document.getElementById('id'); 
elem.parentNode.removeChild(elem); 
2

如果你得到元素,然後找到它的父母然後刪除元素。從父母如下:

element = document.getElementById("element-id"); 
element.parentNode.removeChild(element); 

有必要通過父母,所以這是不可避免的。

2

$('#id').remove()是刪除單個元素的正確方法。請注意,元素ID在html中必須是唯一的,並且該調用必須包裝在DOM ready函數中。

This is a working example根據您的html。它循環通過所有的列表項,並刪除其ID的一個不存在於該數據對象:

var data = { 
    attrib01: "Number 1", 
    attrib02: "Number 2", 
    attrib04: "Number 4" 
}; 

$(document).ready(function() { 
    $("ul > li").each(function() { 
     alert(this.id in data); //check if value is defined 
     if(!(this.id in data)) { 
      $(this).remove(); 
      // This also works: 
      //$('#'+this.id).remove(); 
     }    
    }); 
});​ 

也可以靶向並通過簡單地操作的方式除去僅單個元件(Demo):

$(document).ready(function() { 
    $("#attrib04").remove(); 
});​ 

請注意您的ID - 它們必須完全匹配。 attrib04 != attrib4