使用JQuery操作DOM


DOM操作分类

 

DOM操作分为三类:

DOM Core:任何一种支持DOM的编程语言都可以使用它,如getElementById()

HTML-DOM:用于处理HTML文档,如document.forms

CSS-DOM:用于操作CSS,如element.style.color="green"

 

JQuery中的DOM操作

 

jQueryJavaScript中的DOM操作进行了封装

JQuery中的DOM操作主要可分为样式操作,文本和value属性值操作,节点操作,节点操作中又包含属性操作,节点遍历和CSS-DOM操作。

 

样式操作

 

JQuery中,对元素的样式操作主要有直接设置样式值,获取样式值,追加样式,移除样式和切换样式

1、设置和获取样式

语法:

css(name,value) ;//设置单个属性

css({name:value, name:value,name:value}) ;//同时设置多个属性

 

例如:

$(this).css("border","5px solid #f5f5f5");

或

$(this).css({"border":"5px solid #f5f5f5","opacity":"0.5"});

 

 

2、追加样式和移除样式

 

1)追加样式

 

$(selector).addClass(class);

  

$(selector).addClass(class1 class2 classN);

注:class为类样式名称。

例如:

//CSS类样式:

.text{ padding:10px;}

.content {background-color:#FFFF00; }

.border {border:1px dashed #333; }

 

//JQeury代码:

$("h2").mouseover(function() {

     $("p").addClass("content border");

});

 

注:使用addClass()方法仅是追加类样式,即它依旧保存原有的类样式,在此基础上追加新样式。

 

2)移除样式

 

语法:

$(selector).removeClass("class") ;

  

$(selector).removeClass("class1 class2 classN ") ;

 

其中参数class为类样式名称,该名称是可选的,当选某个类游戏名称时,则移除该类样式,要移除多个类样式时,与addClass()方法语法类似,每个类样式之间用空格隔开。

例如:

$("h2").mouseout(function() {

        $("p").removeClass("text content");

});

 

 

3、切换样式

toggleClass()

模拟了addClass()removeClass()实现样式切换的过程

语法:

$(selector).toggleClass(class) ;

例如:

$("h2").click(function() {

    $("p").toggleClass("content  border");

});

 

 

4、判断是否含指定的样式

 

hasClass( )方法来判断是否包含指定的样式

语法:

$(selector). hasClass(class);

其中参数class为类样式名称,该名称是可选的,规定指定元素中查找的类名,返回值为布尔值,如果包含查找的类则返回true,否则返回false

例如:

$("h2").mouseover(function() {

    if(!$("p").hasClass("content ")){

$("p").addClass("content ");

}

});

$("h2").mouseout(function() {

      if($("p").hasClass("content ")) {

$("p").removeClass("content ");

    }

});

 

内容操作

 

JQuery提供了对元素内容操作的方法,即对HTML代码(包含标签和标签内容)、标签内容和属性值内容三者的操作。

 

1HTML代码操作

 

html()可以对HTML代码进行操作,类似于JS中的innerHTML

语法:

$("div.left").html();//获取元素中的html代码

 $("div.left").html("<div class='content'></div>");//设置元素中的html代码

 

2、标签内容操作

 

text()可以获取或设置元素的文本内容

语法:

$("div.left").text();//获取元素中的文本内容

 $("div.left").text("<div class='content'></div>");//设置元素中的文本内容

 

 

html()text()方法的区别

语法格式

参数说明

功能描述

html( )

无参数

用于获取第一个匹配元素的HTML内容或文本内容

html(content)

content为元素的HTML内容

用于设置所有匹配元素的HTML内容或文本内容

text( )

无参数

用于获取所有匹配元素的文本内容

text (content)

content为元素的文本内容

用于设置所有匹配元素的文本内容

 

 

3、属性值操作

 

val()可以获取或设置元素的value属性值

语法:

$(this).val();//获取元素的value属性值

    

$(this).val(value);//设置元素的value属性值

 

例如:

  <script>

  $(document).ready(function(){

  $("#searchtxt").focus(function(){         // 搜索框获得鼠标焦点

  var txt_value =  $(this).val();   // 得到当前文本框的值

  if(txt_value=="电风扇"){

  $(this).val("");              // 如果符合条件,则清空文本框内容

  }

  });

  $("#searchtxt").blur(function(){	  // 搜索框失去鼠标焦点

  var txt_value =  $(this).val();   // 得到当前文本框的值

  if(txt_value==""){

  $(this).val("电风扇");    // 如果符合条件,则设置内容

  }

  });

  });

  </script>

 

 

节点与属性操作

 

节点操作

 

创建节点

 

语法:

$(selector)

$(element)

$(html)

 

$()的参数说明

参数

描述

selector

选择器,使用JQuery选择器匹配元素

element

DOM元素,以DOM元素来创建JQuery对象

html

HTML代码,使用HTML字符串创建JQuery对象

 

例如:

var $newNode=$("<li></li>");

 var $newNode1=$("<li>你喜欢哪些冬季运动项目?</li>");

var $newNode2=$("<li title='last'>北京申办冬奥会是再合适不过了!</li>");

 

插入节点

 

从插入方式上主要分为两大类,内部插入节点和外部插入节点

 

元素内部插入子节点

语法

功能

append(content)

$(A).append(B)表示将B追加到A

如:$("ul").append($newNode1);

appendTo(content)

$(A).appendTo(B)表示把A追加到B

如:$newNode1.appendTo("ul");

prepend(content)

$(A). prepend (B)表示将B前置插入到A

如:$("ul"). prepend ($newNode1);

prependTo(content)

$(A). prependTo (B)表示将A前置插入到B

如:$newNode1. prependTo ("ul");

例如:

    var $newNode1=$("<li>你喜欢哪些冬季运动项目?</li>");

    var $newNode2=$("<li title='last'>北京申办冬奥会是再合适不过了!</li>");

    $("ul").append($newNode1);

$("ul").prepend($newNode2);

 

元素外部插入同辈节点

语法

功能

after(content)

$(A).after (B)表示将B插入到A之后

如:$("ul").after($newNode1);

insertAfter(content)

$(A). insertAfter (B)表示将A插入到B之后

如:$newNode1.insertAfter("ul");

before(content)

$(A). before (B)表示将B插入至A之前

如:$("ul").before($newNode1);

insertBefore(content)

$(A). insertBefore (B)表示将A插入到B之前

如:$newNode1.insertBefore("ul");

 

 

例如:

    var $newNode3=$("<li>北京冬残会筹备工作在京举行</li>");

    var $newNode4=$("<li>北京奥匹克塔奥运五环标志落成!</li>");

    $("ul").after($newNode3);

$("ul").before($newNode4);

 

 

删除节点

 

remove():删除整个节点

语法:

$(selector).remove([expr]);

 

empty():清空节点内容

语法:

$(selector).empty();

 

例如:

$(".gameList li:eq(1)").remove();

$(".gameList li:eq(1)").empty();

 

 

替换节点

 

replaceWith()replaceAll()用于替换某个节点

 

例如:

var $newNode1=$("<li>你喜欢哪些冬季运动项目?</li>");

//replaceWith()

$(".gameList li:eq(2)").replaceWith($newNode1);

//replaceAll()

$($newNode1).replaceAll(".gameList li:eq(2)");


 

复制节点

 

若要对节点进行复制,则可以使用clone()方法,该方法能够生成被选元素的副本,包含子节点,文本和属性。

语法:

$(selector).clone([includeEvents]) ;

 

参数[includeEvents]为可选值,为布尔值tureflase, true复制事件处理,false时反之

例如:

$(".gameList li:eq(1)").click(function(){

     $(this).clone(true).appendTo(".gameList");

    })

$(".gameList li:eq(2)").click(function(){

     $(this).clone(false).appendTo(".gameList");

    })

 

 

属性操作

 

JQuery中,属性操作的方法有两种,即获取与设置元素属性的attr()方法和删除元素属性的removeAttr()方法。

1、获取与设置元素属性

 

语法:

$(selector).attr([name]) ;//获取属性值

$(selector).attr({[name1:value1][nameN:valueN]}) ;//设置多个属性的值

 

例如:

 

    $(".contain img").click(function(){

        alert($(this).attr("alt"));//获取属性值

})

//设置属性值

    $(".contain img").attr({width:"200",height:"80"});

 

 

2、删除元素属性

removeAttr()用来删除元素的属性

语法:

$(selector).removeAttr(name) ;

例如:

$(".contain img").removeAttr("alt");

 

 

节点遍历

 

JQuery中不仅能够对获取到的元素进行操作,还能通过已获取到的元素,获取与其相邻的兄弟元素、祖先元素等,进行操作。

 

遍历子元素

 

children()方法可以用来获取元素的所有子元素

语法:

$(selector).children([expr]);

例如:

//获取<section>的子元素,但不包含子元素的子元素

var $section =$("section").children();

alert($section.length);

 

 

遍历同辈元素

jQuery可以获取紧邻其后、紧邻其前和位于该元素前与后的所有同辈元素

 

语法

功能

next([expr])

用于获取紧邻匹配元素之后的元素

$("li:eq(1)").next().addClass("orange");

prev([expr])

用于获取紧邻匹配元素之前的元素

$("li:eq(1)").prev().addClass("orange");

slibings([expr])

用于获取位于匹配元素前面和后面的所有同辈元素

$("li:eq(1)").siblings().addClass("orange");

 

 

遍历前辈元素

 

parent():获取元素的父级元素

parents():元素元素的祖先元素

语法:

$(selector).parent({selector})

$(selector).parents({selector})

其中两者的参数selector均是可选的,表示被匹配元素的选择器表达式。

例如:

$("li:eq(1)").parent().addClass("orange");

 $("li:eq(1)").parents().addClass("orange");

 

 

其他变量方法

 

1each()方法

each( ) :规定为每个匹配元素规定运行的函数

语法:

$(selector).each(function(index,element)) ;

index:选择器位置

element:当前的元素

例如:

$("img").click(function(){

       $("li").each(function(){

           var str=$(this).text()+"<br>";

           $("section").append(str);

       })

   });

 

2end()方法

 

end( ):结束当前链条中的最近的筛选操作,并将匹配元素集还原为之前的状态

语法:

.end();

例如:

$(".contain :header").css({"background":"#2a65ba","color":"#ffffff"});


$(".gameList li").first().css("background","#b8e7f9").end().last().css ("background","#d3f4b5");

$(".gameList li:last").css("border","none");

 

 

CSS-DOM操作

 

css()外,还有获取和设置元素高度、宽度等的样式操作方法

 

CSS-DOM相关操作方法说明

语法

功能

css()

设置或返回匹配元素的样式属性

height([value])

设置或返回匹配元素的高度

width([value])

设置或返回匹配元素的宽度 

offset([value])

返回以像素为单位的topleft坐标。仅对可见元素有效

offsetParent( )

返回最近的已定位祖先元素。定位元素指的是元素的CSS position值被设置为relativeabsolutefixed的元素

position( )

返回第一个匹配元素相对于父元素的位置

scrollLeft([position])

参数可选。设置或返回匹配元素相对滚动条左侧的偏移

scrollTop([position])

参数可选。设置或返回匹配元素相对滚动条顶

 

例如:

<script>

$(document).ready(function(){

var adverTop=parseInt($("#adver").css("top"));

var adverLeft=parseInt($("#adver").css("left"));

$(window).scroll(function(){

var scrollTop = parseInt($(this).scrollTop());//获取滚动条翻上去的距离

var scrollLeft = parseInt($(this).scrollLeft());//获取滚动条向右的距离

$("#adver").offset({top:scrollTop+adverTop});

$("#adver").offset({left:scrollLeft+adverLeft});

});

})

</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值