jQuery读书笔记(三)——jQuery中的DOM操作

        DOMDocument Object Model的缩写,意思是文档对象模型。是一种与浏览器、平台、语言无关的接口,使用该接口可以轻松地访问页面中所有的标准组件。

1.       DOM操作的分类

DOM操作分为3个方面,即DOM Core(核心)、HTML-DOMCSS-DOM

1.1   DOM Core

使用DOM Core来获取表单对象的方法

       Document.getElementsByTagName(“form”);

       使用DOM Core来获取某元素的src属性的方法:

       Element.getAttribute(“src”);

1.2   HTML-DOM

在使用JSDOMHTML文件编写脚本时,有许多专属于HTML-DOM的属性。

使用HTML-DOM来获取表单对象的方法

       Document.forms;

       使用HTML-DOM来获取某元素的src属性的方法:

       element.src;

1.3 CSS-DOM

JS中,CSS-DOM技术的主要作用是获取和设置style对象的各种属性。

element..style.color = “red”;

2.       jQuery中的DOM操作

2.1   查找节点

2.1.1查找元素节点

获取元素节点并打印出它的文本内容。

var $li = $(“ul li:eq(1)”);

var li_txt = $li.text();

alert(li_txt);

2.1.2查找属性节点

利用jQuery选择器查找到需要的元素之后,就可以使用attr()方法来获取它的各种属性的值。

var $para = $(“p”);

var p_txt = $para.attr(“title”);

alert(p_txt);

2.2   创建节点

2.2.1 创建元素节点

        var $li_1 = $(“<li></li>”);

        var $li_2 = $(“<li></li>”);

        $(“ul”).append($li_1);

        $(“ul”).append($li_2);

2.2.2 创建文本节点

        var $li_1 = $(“<li>香蕉</li>”);

        var $li_2 = $(“<li>雪梨</li>”);

        $(“ul”).append($li_1);

        $(“ul”).append($li_2);

2.2.3 创建属性节点

        var $li_1 = $(“<li title=’香蕉’>香蕉</li>”);

        var $li_2 = $(“<li title=’雪梨’>雪梨</li>”);

        $(“ul”).append($li_1);

        $(“ul”).append($li_2);

2.3插入节点

1append() 向每个匹配的元素内部追加内容

Html代码:

<p>我想说:</p>

jQuery

$(“p”).append(“<b>你好</b>”);

结果:

<p>我想说:<b>你好</b></p>

2appendTo() 将所有匹配的元素追加到指定的元素中。实际上,使用该方法是颠倒了常规的$(A).append(B)的操作,即不是将B追加到A中,而是将A追加到B

Html代码:

<p>我想说:</p>

jQuery

$(“<b>你好</b>”).appendTo(“p”);

结果:

<p>我想说:<b>你好</b></p>

3prepend() 向每个匹配的元素内部前置内容

Html代码:

<p>我想说:</p>

jQuery

$(“p”).prepend(“<b>你好</b>”);

结果:

<p><b>你好</b>我想说:</p>

4prependTo() 将所有匹配的元素前置到指定的元素中。实际上,使用该方法是颠倒了常规的$(A).prepend(B)的操作,即不是将B追加到A中,而是将A追加到B

Html代码:

<p>我想说:</p>

jQuery

$(“<b>你好</b>”).prependTo(“p”);

结果:

<p><b>你好</b>我想说:</p>

5after() 在每个匹配的元素之后插入内容

Html代码:

<p>我想说:</p>

jQuery

$(“p”).after(“<b>你好</b>”);

结果:

<p>我想说:</p><b>你好</b>

6insertAfter() 将所有匹配的元素插入到指定的元素后面。实际上,使用该方法是颠倒了常规的$(A).after(B)的操作,即不是将B追加到A中,而是将A追加到B

Html代码:

<p>我想说:</p>

jQuery

$(“<b>你好</b>”).insertAfter(“p”);

结果:

<p>我想说:</p><b>你好</b>

7before() 在每个匹配的元素之前插入内容

Html代码:

<p>我想说:</p>

jQuery

$(“p”).before(“<b>你好</b>”);

结果:

<b>你好</b><p>我想说:</p>

8inserBefore() 将所有匹配的元素插入到指定的元素前面。实际上,使用该方法是颠倒了常规的$(A).before(B)的操作,即不是将B追加到A中,而是将A追加到B

Html代码:

<p>我想说:</p>

jQuery

$(“<b>你好</b>”).insertBefore(“p”);

结果:

<b>你好</b><p>我想说:</p>

2.4   删除节点

1remove()方法

$(“ul li:eq(1)”).remove();

当某个节点用remove()方法删除后,该节点所包含的所有后代节点将同时被删除。这个方法的返回值是一个指向已被删除的节点的引用,因此可以在以后再使用这些元素。

2empty()方法

empty()方法并不是删除节点,而是清空节点,它能清空元素中的所有后代节点。

$(“ul li:eq(1)”).empty();

2.5   复制节点

单击<li>元素后需要再复制一个<li>元素

        $(“ul li”).click(function(){

               $(this).clone().appendTo(“ul”);

})

       复制节点后,被复制的新元素并不具有任何行为。如果需要新元素也具有复制功能,可以使用如下代码:

$(this).clone(true).appendTo(“body”);

       clone()方法中传递了一个参数true,它的含义是复制元素同时复制元素中所绑定的事件。因此该元素的副本也同样具有复制功能。

2.6 替换节点

       ReplaceWith()replaceAll()

       $(“p”).replaceWith(“<strong>你好</strong>”);

       $(“<strong>你好</strong>”).replaceAll(“p”);

       注:如果在替换之前,已经为元素绑定事件,替换后原先绑定的事件将会与被替换的元素一起消失,需要在新元素上重新绑定事件。

2.7   包裹节点

(1)       wrap()

$(“strong”).wrap(“<b></b>”);

结果:

<b><strong title = “你好”>你好</strong></b>

<b><strong title = “你好”>你好</strong></b>

(2)       wrapAll()方法

该方法会将所有匹配的元素用一个元素包裹起来。与wrap()的区别是,wrap()是将所有元素进行单独的包裹。

$(“strong”).wrapAll(“<b></b>”);

结果:

<b>

<strong title = “你好”>你好</strong>

<strong title = “你好”>你好</strong>

</b>

(3)       wraplnner()方法

该方法将每一个匹配的元素的子内容(包括文本节点)用其他结构化的标记包裹起来。

$(“strong”).wraplnner(“<b></b>”);

结果:

<strong title = “你好”><b>你好</b></strong>

2.8   属性操作

2.8.1获取属性和设置属性

              var $para = $(“p”);

              var p_txt = $para.attr(“title”);  //获取<p>元素节点属性title

              $(“p”).attr(“title”,”your title”);  //设置单个的属性值

注意:jQuery中的很多方法都是同一个函数实现获取(getter)和设置(setter)的,例如上面的attr()方法,既能设置元素属性的值,也能获取元素属性的值。类似的还有html()text()height()width()val()css()等方法。

2.8.2 删除属性

$(“p”).removeAttr(“title”);

2.9   样式操作

2.9.1获取样式和设置样式

$(“p”).attr(“class”,”high”);  //设置<p>元素的class为“high

       2.9.2 追加样式

              $(“p”).addClass(“another”);  //<p>元素追加“another”类

       2.9.3 移除样式

              Html代码:

              <p class=”high another”>test</p>

              Jquery代码:

              $(“p”).removeClass(“high”);  //移除<p>元素中值为“high”的class

              $(“p”).removeClass(“high”).removeClass(“another”); //移除<p>元素中的两个class

              $(“p”).removeClass(“high another”);  //移除<p>元素中的两个class

              $(“p”).removeClass();  //移除<p>元素的所有class

       2.9.4切换样式

              toggleClass()方法控制样式上的重复切换。

              $(“p”).toggleClass(“another”); //重复切换类名“another

       2.9.5 判断是否含有某个样式

              hasClass()可以用来判断元素中是否含有某个class,如果有,则返回true,否则返回false

              $(“p”).hasClass(“another”);  

              此方法等价于$(“p”).is(“another”);  //is(“.”+class);

2.10  设置和获取HTML,文本和值

(1)       html()方法

此方法类似于JS中的innerHTML属性,可以用来读取和设置某个元素中的HTML内容。

var p_html = $(“p”).html();  //获取<p>元素的HTML代码       

$(“p”).html(“<strong>你好</strong>”);  //设置<p>元素的HTML代码

注:html()方法可以用于XHTML文档,但不能用于XML文档。

       2 text()方法

此方法类似于JS中的innerText属性,可以用来读取和设置某个元素中的文本内容。

var p_text = $(“p”).text();  //获取<p>元素的文本内容             

$(“p”).text(“你好”);  //设置<p>元素的文本内容

注:JS中的innerText属性并不能在Firefox浏览器下运行,而jQuerytext()方法支持所有浏览器。text()方法对于HTML文档和XML文档都有效。

3 val()方法

此方法类似于JS中的value属性,可以用来设置和获取某个元素中的值。无论元素是文本框,下拉列表还是单选框,他都可以返回元素的值。如果元素为多选,则返回一个包含所有选择的值的数组。

$(“:checkbox”).var([“check2”,”check3”]);

$(“:radio”).val([“radio2”]);

2.11  遍历节点

(1)       children()方法

该方法用于取得匹配元素的子元素集合。

var $body = $(“body”).children();

注:children()方法只考虑子元素而不考虑任何后代元素。

(2)       next()方法

该方法用于取得匹配元素后面紧邻的同辈元素。

var $p1  = $(“p”).next();  //取得紧邻<p>元素后的同辈元素

(3)       prev()方法

该方法用于取得匹配元素前面紧邻的同辈元素。

var $ul = $(“ul”).prev();  //取得紧邻<ul>元素前的同辈元素

(4)       siblings()方法

该方法用于取得匹配元素前后所有的同辈元素。

var $p2  = $(“p”).siblings();  //取得紧邻<p>元素的同辈元素

(5)       closest()方法

它用来取得最近的匹配元素。首先检查当前元素是否匹配。如果匹配则直接返回元素本身。如果不匹配则向上查找父元素,逐级向上直到找到匹配的选择器的元素,如果什么都没找到则返回一个空的jQuery对象。

2.12  CSS-DOM操作

$(“p”).css(“color”);   //获取<p>元素的样式颜色

$(“p”).css(“color”,”red”);   //设置<p>元素的样式颜色为红色

$(“p”).css({“fontSize”:”30px”,”backgroundColor”:”#888888”})  //同时设置多个样式属性

$(“p”).css(“opacity”,”0.5”);   //设置透明度

$(“p”).css(“height”);   //设置高度方法1

$(“p”). height();      //设置高度方法2

CSS-DOM中,还有以下几个常用方法

(1)       offset()方法

作用是获取元素在当前视窗的相对偏移,其中返回的对象包含两个属性,即topleft,它只对可见元素有效。

var offset = $(“p”).offset();   //获取<p>元素的offset()

var left = offset.left;             //获取左偏移

var top = offset.top;             //获取右偏移

(2)       position()方法

作用是获取元素相对于最近的一个position样式属性设置为relative或者absolute的祖父节点的相对偏移,以offset()一样,它返回的对象包含两个属性,即topleft

var position = $(“p”). position ();   //获取<p>元素的position()

var left = position.left;           //获取左偏移

var top = position.top;           //获取右偏移

(3)       scrollTop()方法和scrollLeft()方法

这两个方法的作用分别是获取元素的滚动条距顶端的距离和距左侧的距离。

var $p = $(“p”);   //获取<p>元素的offset()

var scrollTop = $p.scrollTop();            //获取元素的滚动条距顶端的距离

var scrollLeft = $p.scrollLeft();            //获取元素的滚动条距左侧的距离

 

$(“textarea”).scrollTop(300);        //元素的垂直滚动条滚动到指定的位置

$(“textarea”).scrollLeft(300);        //元素的横向滚动条滚动到指定的位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值