jQuery DOM



DOM操作分为三类
1.DOM Core
DOM Core不是Javascript的专属品,任何一种支持DOM的编程语言都可以使用它,它的用途不仅限于处理一种使用标记语言编写出来的文档。
2.HTML-DOM
比DOM Core出现的更早,它提供了一些更加简明的标记来描述各种HTML-DOM的元素属性。
3.CSS-DOM
CSS-DOM 是针对CSS的操作,在JavaScript中,主要作用是获取和设置style对象各种属性。

本章需要掌握的技能目标

1、使用jQuery操作css样式。
2、使用jQuery操作文本与属性值内容
3、使用jQuery操作DOM节点
4、使用jQuery遍历DOM节点
5、使用jQuery操作CSS-DOM




一、样式操作

1、直接样式操作
    语法:
    css(name,value);   //设置单个属性
    css({name:value,name:value,....}) //同时设置多个属性,大括号包裹、冒号分割name与value,不同属性之间用逗号分隔


2、追加样式和移除样式
    语法:
    addClass("class") //追加单个样式
    addClass("class1 class2 ...")  //追加多个样式,同空格分隔

3、移除样式
    语法:
    removClass("class")  //移除单个样式
    removClass("class1 class2") //移除多个样式,有空格分隔












//示例
<script type="text/javascript">
$(document).ready(function(){

//触发button的单击事件时,移除p标签的intro样式
  $("button").click(function(){
    $("p").removeClass("intro");
  });
});
</script>
<style type="text/css">
.intro
{
font-size:120%;
color:red;
}
</style>
</head>

<body>
<h1 id="h1">This is a heading</h1>
<p class="intro">This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>从第一个段落中删除类</button>
</body>






















4、切换样式

    使用toggle()方法可以切换元素的可见状态,而使用toggleClass()方法可以切换不同元素的类样式。
    语法:
    toggleClass("class");







//示例
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){

    //触发单击事件时,切换为main样式,再次单击,回到原来样式
    $("p").toggleClass("main");
  });
});
</script>
<style type="text/css">
.main
{
font-size:120%;
color:red;
}
</style>
</head>

<body>
<h1 id="h1">This is a heading</h1>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button class="btn1">切换段落的 "main" 类</button>



























内容操作

1、HTML代码操作

    语法:
    html(["content"]);

    定义和用法
    html() 方法返回或设置被选元素的内容 (inner HTML)。
    如果该方法未设置参数,则返回被选元素的当前内容。

    返回元素内容
    当使用该方法返回一个值时,它会返回第一个匹配元素的内容。












    //示例
    <script type="text/javascript">
$(document).ready(function(){
  $(".btn1").click(function(){
    //未设置参数,返回p元素的值:This is a paragraph.
    alert($("p").html());
  });
});
</script>
</head>
<body>
<p>This is a paragraph.</p>
<button class="btn1">改变 p 元素的内容</button>
</body>













设置元素内容
当使用该方法设置一个值时,它会覆盖所有匹配元素的内容。



//示例
<script type="text/javascript">
$(document).ready(function(){
  $(".btn1").click(function(){
    //所有p元素的值被修改为 Hello World!
    $("p").html("Hello <b>world!</b>");
  });
});
</script>
</head>
<body>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button class="btn1">改变 p 元素的内容</button>
</body>















使用函数来设置元素内容

使用函数来设置所有匹配元素的内容。

    语法:
    $(selector).text(function(index,oldcontent))
    描述:
    必需。规定返回被选元素的新文本内容的函数。
    index - 可选。接受选择器的 index 位置。
    oldcontent- 可选。接受选择器的当前内容。











    //示例
<script type="text/javascript">
    $(document).ready(function(){
      $("button").click(function(){
        $("p").html(function(n,oldcontent){

        //可以获得选择器的当前内容(这是一个段落、这是另一个段落)
         alert(oldcontent); 

        //返回新的内容(这个p元素的index是0,这个p元素的index是1)
        return "这个 p 元素的 index 是:" + n;
        });
      });
    });
</script>
</head>
<body>
    <p>这是一个段落。</p>
    <p>这是另一个段落。</p>
    <button>改变 p 元素的内容</button>
</body>





















2.标签内容操作
    语法:text([content]);

    text() 方法设置或返回被选元素的文本内容。(content为空时返回,有值时设置)

a.返回文本内容

当该方法用于返回一个值时,它会返回所有匹配元素的组合的文本内容(会删除 HTML 标记)。








//示例
$(document).ready(function(){
  $(".btn1").click(function(){

    //返回所有匹配的p标签内容(This is a paragraph.、This is another paragraph.)
    alert($("p").text());
  });
});
</script>
</head>
<body>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button class="btn1">获得 p 元素的文本内容</button>
</body>














设置文本内容
当该方法用于设置值时,它会覆盖被选元素的所有内容。



//示例
<script type="text/javascript">
$(document).ready(function(){
  $(".btn1").click(function(){
   //将所有匹配的p元素的值设置为Hello world!
    $("p").text("Hello world!");
  });
});
</script>
</head>
<body>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button class="btn1">改变所有 p 元素的文本内容</button>
</body>














htnl()与text()方法的区别 
语法格式参数说明功能描述
html()无参数用于获取第一个匹配元素的HTML内容或文本内容
html([content])content参数为元素的HTML内容用于设置所有匹配元素的HTML内容或文本内容
text()无参数用于设置所有匹配元素的文本内容
text([content])content参数为元素的文本内容用于设置所有匹配元素的文本内容

3.属性值操作

在jQuery中,除了可以使用html()方法和text()方法获取与设置元素内容外,还提供了获取元素value属性值的方法val()。该方法非常常用,多用于操作表单的<input>元素。

语法:
    val([value]);

val() 方法返回或设置被选元素的值。
元素的值是通过 value 属性设置的。该方法大多用于 input 元素。
如果该方法未设置参数,则返回被选元素的当前值。
1、返回 Value 属性
返回第一个匹配元素的 value 属性的值。










//示例
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    //返回第一个匹配元素的value属性的值:Bill
    alert($("input:text").val());
  });
});
</script>
</head>
<body>
Firstname: <input type="text" name="fname" value="Bill" /><br />
Lastname: <input type="text" name="lname" value="Gates" /><br /><br />
<button>获得第一个文本域的值</button>
</body>















2、设置 Value 属性的值


//示例
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    //将value值设置为Bill Gates
    $("input:text").val("Bill Gates");
    //意外发现:input:text 等同于 input[type=text]
    //$("input[type=text]").val("Bill Gates");
  });
});
</script>
</head>
<body>
<p>Name: <input type="text" name="user" /></p>
<button>设置文本域的值</button>
</body>
















3.使用函数设置 Value 属性的值


//示例
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $("input:text").val(function(n,c){ //n是获取元素的index,c是返回值
      return c + " Gates";
    });
  });
});
</script>
</head>
<body>
<p>Name: <input type="text" name="user" value="Bill" /></p>
<button>设置文本域的值</button>
</body>













htnl()、text()、val()共同点:

1、都包含无参方法,等于无参方法时,返回各自的value

2、都包含有参方法,等于有参方法时,设置各自的value

3、都可以用函数设置value,其中,函数包含两个值,index和oldvalue,index是匹配元素的索引,oldvalue是匹配元素当前的value,都可以省略。








二:节点与属性操作

1:节点操作

在jQuery中,节点操作主要分为查找、创建、插入、删除、替换和复制6种操作方式。其中,查找、创建、插入、删除和替换节点是日常开发中使用最多,也是最重要的。


a、查找节点

    想要对节点进行操作,即增、删、改和复制,首先必须找到要操作的元素。
    所以,查找的语法示例:
    $("h1").hide();   
    查找h1的元素,并将其隐藏。
    其实,查找元素,就是通过选择器获取元素。


b、创建节点元素

    在之前的文章中,讲解过函数$()。该函数就是用于将匹配的DOM元素转换为jQuery对象的,它就好像一个零件的生产工厂,所以被形象地称为工厂函数。
    $()语法:
    $(selector) //选择器。使用jQuery选择器匹配元素
    $(element)  //DOM元素。以DOM元素来创建jQuery对象
    $(html)     //HTML代码,使用HTML字符串创建jQuery对象

HTML代码创建jQuery对象示例:
    var $newNode1 = $("<li></li>")  //创建空的li元素节点
    var $newNode2 = $("<li>HTML</li>") //创建包含文本的li元素节点
    var $newNode3 = $("<li title="标题">HTML</li>") //创建包含文本与属性的li元素节点



c、插入节点





























插入节点方法
插入方式方法描述
内部插入appen(content)向所选的元素内部插入内容,即(A).append(B)表示将B追加到A中。如 (“ul”).append($newNode2);追加的位置在元素的最后
appendTo(content)把所选择的元素追加到另一个指定的元素集合中,既(A).appendTo(B),表示把A追加到B中,如($newNode2).appendTo(“ul”);
与append的唯一区别是语法顺序相反
prepend(content)向每个选择的元素内部前置内容,即(A).prepend(B)表示将B追加到A中,如(“ul”).perpend($newNode2);
prependTo(content)将所有匹配元素前置到指定元素中。该方法仅颠倒了常规prepend()插入元素的操作,即$(A).perpendTo(B)表示将A前置到B中,如(newNode2).prependTo(“ul”)
外部插入after(content)在每个匹配元素之后插入内容,即(A).after(B)表示将B插入到A之后,如(“ul”).after($newNode2);
insertAfter(content)将所有匹配的元素插入到指定元素的后面。该方法颠倒了常规after()插入元素的操作,$(A).insertAfter(B)表示将A插入到B之后,如(newNode2).insertAfter(“ul”);
before(content)向所选择的元素外面前面插入元素,即$(A).before(B)表示将B插入至A之前,如(“ul”).before(newNode2);
insertBefore(content)将所匹配的元素插入到指定元素的前面,该方法仅是颠倒了常规before()插入元素的操作,即$(A).insertBefore(B)表示将A插入至B之前,如(newNode2).insertBefore(“ul”);

注意:每个语句之前都需要添加$符号。


d、删除节点
    语法:(selector).remove([expr]);
    参数expr为可选参数,如果接受参数,则该参数为筛选元素的jQuery表达式,通过该表达式获取指定元素,并进行删除。

    示例:$("ul li:eq(1)").remove();

    定义和用法
    remove() 方法移除被选元素,包括所有文本和子节点。
    该方法不会把匹配的元素从 jQuery 对象中删除,因而可以在将来再使用这些匹配的元素。
    但除了这个元素本身得以保留之外,remove() 不会保留元素的 jQuery 数据。其他的比如绑定的事件、附加的数据等都会被移除。这一点与 detach() 不同。









语法:$(selector).empty()
empty() 方法从被选元素移除所有内容,包括所有文本和子节点。



语法:$(selector).detach();
detach() 方法移除被选元素,包括所有文本和子节点。
这个方法会保留 jQuery 对象中的匹配的元素,因而可以在将来再使用这些匹配的元素。
detach() 会保留所有绑定的事件、附加的数据,这一点与 remove() 不同。





e、替换节点
使用的方法:
    replaceWith()方法和replaceAll()方法
示例:
    $("ul li:eq(1)").replaceWith($newNode2);
    $($newNode2).replaceAll("ul li:eq(1)");

    两种方法的作用相同,只是颠倒了顺序。

f、复制节点

    语法:$(selecrot).clone([includeEvents]);
    includeEvents为可选值,为布尔值,规定是否复制元素的所有事件处理。true复制,flase不复制。














//示例
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    //复制第一个p元素,包括事件处理,然后添加到body中。
    $("body").append($("p:first").clone(true));
  });
  $("p").click(function(){
    $(this).animate({fontSize:"+=1px"});
  });
});
</script>
</head>
<body>

<p>点击本段落可以增加文本的大小。事件处理器同样被复制到新的段落。</p>
<button>复制每个 p 元素,然后追加到 body 元素</button>

</body>



















三:节点遍历

a.在jQuery中,遍历子元素的方法只有一个,即children()方法。
语法:$(childred).children([expr])

expr可选,用于过滤子元素的表达式

children() 方法返回被选元素的所有直接子元素。

该方法只会向下一级对 DOM 树进行遍历。
示例:
//p.c用于过滤子元素
$("div").children("p.c").css({"color":"red","border":"2px solid red"});












b.遍历同辈元素


遍历同辈元素的方法说明
方法描述
next([expr])用于获取紧邻匹配元素之后的元素。参数expr可选,用于过滤同辈元素的表达式,如$(“li:eq(1)”).next().css(“color”,”red”);
prev([expr])用于获取紧邻匹配元素之前的元素。参数expr可选,用于过滤同辈元素的表达式,如$(“li:eq(1)”).prev().css(“color”,”red”);
siblings([expr])用于获取紧邻匹配元素前面和后面的所有同辈元素。参数expr可选,用于过滤同辈元素的表达式,如$(“li:eq(1)”).siblings().css(“color”,”red”);
c.遍历前辈元素
用与遍历父辈元素的方法主要有parent()和parents()。



parent()方法和parents()方法的参数说明
方法描述
parent([selector])参数可选。获取当前匹配元素集合中每个元素的父级元素
parents([selector])参数可选。获取当前匹配元素集合中每个元素的祖先元素



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值