jQuery DOM操做之刪除節點

下面示例可能用到以下HTML代碼:html

<ul>
  <li title="t1">蘋果</li>
  <li>香蕉</li>
  <li>橘子</li>
  <li>葡萄</li>
  <li>草莓</li>
</ul>

一、remove()方法:app

做用:從DOM中刪除全部匹配的元素,傳入的參數用於根據jQuery表達式來篩選元素。this

例如,刪除上圖中<ul>節點中的第二個<li>元素節點,jQuery代碼以下:code

$(document).ready(function() {
   $("ul li:eq(1)").remove();
});

當某個節點用remove()方法刪除後,該節點所包含的全部後代節點將同時被刪除。這個方法的返回值是一個指向已被刪除的節點的引用,所以能夠在之後再使用這些元素。下面的jQuery代碼說明元素用remove()方法刪除後,仍是能夠繼續使用的。
htm

var $li=$("ul li:eq(1)").remove();
$li.appendTo("ul");   //把刪除的節點又從新添加到<ul>元素裏

能夠直接使用appendTo()方法的特性來簡化以上代碼:對象

$("ul li:eq(1)").appendTo("ul");//appendTo()方法也能夠用來移動元素,移動元素時首先從文檔上刪除此元素,而後將該元素插入到文檔中的指定節點。

另外remove()方法也能夠經過傳遞參數來選擇性地刪除元素:事件

$("ul li").remove("li[title='t1']");

二、detach()方法:rem

detach()和remove()同樣,也是從DOM中去掉全部匹配的元素。但須要注意的是,這個方法不會匹配的元素從jQuery對象刪除,於是能夠在未來再使用這些匹配的元素。與remove()不一樣的是,全部綁定的事件、附件的數據等都會保留下來。文檔

經過下面的例子,能夠知道它與remove()方法的區別:it

$("ul li").click(function(){
   alert($(this).html());
})
var $li=$("ul li:eq(1)").detach();  //刪除元素
$li.appendTo("ul");  //從新追加此元素,發現它以前綁定的事件還在,若是使用remove()方法刪除元素的話,那麼它以前把綁定的事件將失效;

三、empty()方法

嚴格來說,empty()方法並非刪除節點,而是清除節點,它能清空元素中的全部後代節點。

$("ul li:eq(1)").empty();//獲取第二個<li>元素節點後,清空此元素裏的內容,注意是元素裏。

運行後的結果爲:

當運行代碼後,第二個<li>元素的內容被清空了,只剩下<li>元素默認的符號"."。

相關文章
相關標籤/搜索