jQuery 的 DOM操作



 jQuery 的 DOM操作。

jQuery 中的 DOM 操作包含查找节点、创建节点、插入节点、删除节点、复制节点、替换节点、包裹节点、属性操作、样式操作、设置和获取 HTML 文本和值、遍历节点。

1、查找节点

1.1 查找元素节点

查找元素节点就是通过选择器选取节点:

   1:  var $li = $("ul li:eq(22)");

1.2 查找属性节点

在 jQuery 中查找到元素节点后就可以利用 attr() 方法获取节点的属性了:

   1:  var $para = $("p");
   2:  var p_text = $para.attr("tittle");
2、创建节点

$(html) 方法会根据传入的 html 标记字符串创建一个 DOM 对象,并将 DOM 对象包装成 jQuery 对象返回。

2.1 创建元素节点

   1:  var $li = $("
  • );

创建的节点作为参数通过 appen() 方法插入文档中:

   1:  $("ul").appen($li);

2.2 创建属性节点

创建属性节点合创建元素节点一样,只需要将属性写在 html 语句中即可:   Honey

   1:  var $li = $("");
3、插入节点
方法 HTML 代码 jQuery 代码 结果
append() Baby $(“p”).append(“Honey“) BabyHoney
appendTo() Baby $(“Honey“).appenTo(“p”) BabyHoney
prepend() Baby $(“p”).prepend(“Honey“) HoneyBaby
prependTo() Baby $(“Honey“).prependTo(“p”) HoneyBaby
after() Baby $(“p”).after(“Honey“) Baby

Honey

insertAfter() Baby $(“Honey“).insertAfter(“p”) Baby

Honey

before() Baby $(“p”).before(“Honey“) HoneyBaby
insertBefore() Baby $(“Honey“).insertBefore(“p”) HoneyBaby

插入节点的节点对象既可以是新创建的节点元素,也可以是从文档中选取的节点元素:

   1:  $("ul").append("
  • Baby
");//对新创建的节点进行插入;
   2:  $("ul").append($(".cc")); //对已有的节点进行插入(即移动原节点);
4、删除节点

首先通过 $(html) 查找节点,然后调用 remove() 方法删除节点:

   1:  $("ul li:even").remove();

此外我们还可以通过调用 empty() 方法清空节点:

   1:  $("ul li:even").empty();

假设我们有如下 html 代码:

   1:  <ul>
   2:      <li>1li>
   3:      <li>2li>
   4:      <li>3li>
   5:      <li>4li>
   6:      <li>5li>
   7:      <li>6li>
   8:  ul>

在 $(“ul li:even”).empty() 代码作用后,通过 firebug 查看代码如下:

   1:  <ul>
   2:      <li>li>
   3:      <li>2li>
   4:      <li>li>
   5:      <li>4li>
   6:      <li>li>
   7:      <li>6li>
   8:  ul>

可见 empty() 方法清空了

  • 标签内的内容。 
    5、复制节点

    复制节点可以调用 clone() 方法:

       1:  $("ul li").clone().appenTo("ul");

    复制节点还有一个 clone(true) 方法:

       1:   $("ul li").clone(true).appenTo("ul");
    带有参数 true 的方法意味着复制出来的节点同时包含了元节点所绑定的事件,不带参数的仅仅是复制节点而已,不包含事件。
    6、替换节点

    替换节点也有两个方法,分别是 replaceWith() 和 replaceAll() ,replaceWith () 是调用者替换成参数,而 replaceAll() 是将参数替换成调用者:

       1:  $("p").raplaceWith("baby");
       2:  $("baby").replaceAll("p");

    上面的两句代码等价,都是将

    标签换成 baby

    7、包裹节点

    有如下 html :

       1:  <i>babyi>
       2:  <i>babyi>

    执行包裹节点有三个方法 wrap()、 wrapAll() 和 wrapInner()。

    a、当使用 wrap() 方法时候:

       1:  $("i").wrap("
    ");

    结果如下:

       1:  <div><i>babyi>div>
       2:  <div><i>babyi>div>

    b、当使用 wrapAll() 方法时候:

       1:   $("i").wrapAll("
    ");

    结果如下:

       1:  <div>
       2:      <i>babyi>
       3:      <i>babyi>
       4:  div>

    c、当使用 wrapInner() 方法时候:

       1:  $("i").wrapInner("
    ");
    结果如下:
       1:  <i><div>babydiv>i>
       2:  <i><div>babydiv>i>

     

    8、属性操作

    8.1 获取属性

    就和查找属性节点一样,通过同样的方式获取属性:

       1:  var $para = $("p");
       2:  var p_text = $para.attr("title");

     


    8.2 设置属性

    如果想设置属性,我们可以通过下面的代码:

       1:  $("p").attr("title","baby");

    两个参数分别问属性名称和属性值。

    若要一次性的设置多个属性的话,我们采用以下代码:

       1:  $("p").attr({"title":"baby","id":"honey","class":"banana"});

    8.3 删除属性

    删除属性我们使用 removeAttr() 方法:

       1:  $("p").removeAttr("title");
    9、样式操作

    9.1 获取样式

    样式是标签的 class 属性,所以我们可以通过获取 class 属性来获取样式:

       1:  var $p _class = $("p").attr("class");

    9.2 设置样式

    还是通过 attr() 方法来设置 class 属性,即设置样式:

       1:  $("p").attr("class","highlight");
    注意在设置样式的时候的 class 属性的值,即 highlight 不需要带 “.” 了。

    9.3 追加样式

    追加样式是在原有的样式基础上再添加一个样式,可以通过 addClass() 方法实现:

       1:  $("div").addClass("highlight");

    9.4 移除样式

    当我们不需要此样式的时候,需要移除样式,但移除样式不等同于移除 class 属性:

       1:  $("p").removeClass("highlight");
    当需要一次移除多个样式的时候,我们可以通过下面方法:

       1:  $("p").removeClass("highlight").removeClass("hot");

    或者

       1:  $("p").removeClass("highlight hot");

    有时候我们需要一次的移除所有属性,此时我们可以调用不带参数的 removeClass() 方法移除所有样式:

       1:  $("p").removeClass();

    9.5 切换样式

    切换样式我们可以使用一个简单的方法 toggle() 来实现:

       1:  $("#baby").toggle(
       2:      function(){
       3:          $("div").attr("class","highlight");
       4:      },function(){
       5:          $("div").attr("class","hot");
       6:      }
       7:  );

    toggle() 方法就是在几个 function 之间不停的切换。

    jQuery 还提供了一个更为简单的切换样式的方法 toggleClass() :

       1:  $("#baby").click(function(){
       2:      $("div").toggleClass("highlight");
       3:  });

    toggleClass() 就是检查 $(“div”) 是不是已有 highlight 样式,如果有则将样式移去,若果没有则将样式加上。

    9.6 判断是否含有某个样式

    判断是否含有某个样式可以通过 hasClass() 方法,如果含有则返回 true,没有则返回 false:

       1:  $("p").hasClass("highlight");
    10、设置和获取 html 、文本和值

    10.1 html() 方法

    html() 方法用于获取或设置某个元素中的 html 内容。

    假设用如下 html 内容:

       1:  <p><stong>babystrong>p>

    通过下面的代码可以得到元素内部的 html 代码:

       1:  $("p").html();

    通过下面的代码可以设置

    元素内部的 html 代码:

       1:  $("p").html("honey");

    10.2 text() 方法

    text() 方法和 html() 方法相似,可以取出或设置某个元素的文本内容:

       1:  var $p_text = $("p").text();
       2:  $("ul li").text($p_text);

    10.3 val() 方法

    val() 方法的作用也和上面的方法类似,可以取出或设置某个元素的值:

       1:  var $baby_val = $("#baby").val();
       2:  $("#honey").val($baby_val);

    此外,val() 方法还可以改变单选和多选的默认选项:

       1:  $("#single").val("baby");
       2:  $("#multi").val(["baby","lady"]);//以数组形式赋值;
    11、遍历节点

    11.1 children() 方法

    children() 方法是用来获取某元素的直接子元素集合的,不包含子元素的子元素:

       1:  $("ul").children("li").slideDown("slow");

    11.2 next() 方法

    next() 方法用于获取下一个同辈元素:

    有如下 html :

       1:  <p>babyp>
       2:  <i>ladyi>

    调用下面代码:

       1:  $("p").next();

    即可得到元素 lady

    11.3 prev() 方法

    prev() 方法和 next() 方法相反,prev() 方法用于获取上一个同辈元素,不演示了。

    11.4 siblings() 方法

    siblings() 方法用于获取某元素的前后的所有同辈元素集合。

    遍历节点还有很多方法,jQuery 文档是个很好的参考。

    —EOF—

    DOM (Document Object Model) 分为 DOM Core 、HTML-DOM 和 CSS-DOM。