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>元素默认的符号"."。

相关文章
相关标签/搜索