jquery DOM

637 查看

jquery封装了一些dom操作,粗略看起来是在写法上精简了不少,最明显的就是jquery中的dom操作以$()符号作为最显著的标准。但本质上,两种方式获取的结果对象是不一样的。现在先来总结一下,jquery中的一些dom操作接口。

节点的操作

  • 查找节点:

var $var_1=$("htmltype");   //获取所有htmltype节点

例如:

var $ul_1=$("ul");
  • 创建并追加节点:

var $var_1=$("<htmltype>");//这句话是创建一个节点
$("htmltype2").append($var_1) ; //这句话是把节点插入所有htmltype2节点中

例如:

var $li_1=$("<li  title="title1">香蕉</li>");
$("ul").append($li_1);

其中插入方法有以下几种:

append() 把B追加到A内部(所有的A元素,以下类似)
appendTo() 把A追加到B内部
prepend() 把B追加到A内部的内容前
prependTo() 把A追加到B的内容前
after() 在A后追加B
insertAfter() 在A前追加B
before() 在A前追加B
insertBefore()在A后追加B

例如:

$("ul").append("<li>你好</li>");//在ul内部追加li
$("<li>你好</li>").appendTo("ul");//在ul内部追加li
  • 删除节点

remove() 删除该元素
empty() 清空节点,包括后代节点

例如:

   $("ul  li").remove(“li[title="菠萝"]”);//删除ul中li元素属性title="菠萝"的元素
  • 复制节点

clone();//复制本节点

例如:

$("ul  li:eq[1]").clone().appenTo("ul");//复制并追加到ul中,只复制是不会显示出来的
  • 替换节点

replaceWith();//将B替换所有A
replaceAll();//将A替换所有B
  • 包裹节点

warpAll();//用B包裹A
warpInner();//用B包裹A的内容

例如:

 <div id="div1">
     <p id="p1">我是p1里的内容</p>
     <p id="p2">我是p2里的内容</p>
</div>

//执行代码: 
 $("#p1").wrap($("#p2"));
//执行之后的结果为:

<div id="div1">
    <p id="p2">
         我是p2里的内容<p id="p1">我是p1里的内容</p>
    </p>
    <p id="p2">我是p2里的内容</p>
</div>           

注意到:当选择DOM元素用wrap包裹元素的时候,是另外复制一份包裹元素的。并不是将被包裹元素移动到包裹元素里。

属性操作

  • 获取和设置属性

var $var_1=$("p");//这句话是获取节点P
var $p_1=$var_1.attr("title");//获取节点P的title属性
var $p_2=$var_1.attr("title","你好");//设置节点P的title属性为"你好"
  • 删除属性

$("p").removeAttr("title");//删除节点P的Title属性

样式操作

  • 获取和设置样式

var $var_class=$("p").attr("class");//获取节点P的class属性
$("p").attr("class","class1");设置节点P的class属性为样式表类class1
  • 追加样式

addClass() 添加样式到A
$("p").addClass("another");//例如,添加样式表类another类到P
  • 移除样式

removeClass() 移除类
  • 切换样式

toggleClass() 切换clss属性类为新的类
  • 判断某个样式是否存在

hasClass()
  • css("属性","值")
    css("属性","值") 设置元素css某个属性的值,如:

$("p").css("color","red");//设置P的css属性{color:red;}

内容的操作

html() 该方法获取html元素的内容,如:var var1=$("p").html();//获取P元素内的内容
text() 获取或设置某个html元素的内容
val() 获取元素的Value值
children() 获取html元素的所有子节点
next()  获取html元素后紧邻的同辈节点
prev() 获取html元素前紧邻的同辈节点
siblings() 获取html元素前后紧邻的同辈节点 

jquery dom vs. dom

DOM对象是我们用传统的方法(javascript)获得的对象,jQuery对象就是用jQuery的类库选择器获得的对象。JQuery对象就是通过jQuery包装DOM对象后产生的对象。JQuery对象是jQuery独有的,其可以使用jQuery里的方法,但是不能使用DOM的方法;
例如:

$("#color").html();//获取id为color的元素内的html代码,html()是jQuery特有的方法;

它等同于:

document.getElementById("color").innerHTML;

DOM对象就是javascript固有的一些对象。DOM对象能使用javascript固有的方法,但是不能使用jQuery里面的方法。
例如

$("#id").innerHTML 和$("#id").checked

之类的写法都是错误的,可以用

$("#id").html()和$("#id").attr("checked")

之类的 jQuery方法来代替。

var domObj =document.getElementById("id"); //DOM对象
var $obj =$("#id"); //jQuery对象;

dom 对象jquery dom 对象的相互转化

  • jQuery对象转换成DOM对象
    jquery提供了两种方法将一个jquery对象转换成一个dom对象,即

[index]和get(index)

jquery对象就是一个数组对象
如下是将一个jquery对象转换成dom对象,再使用dom对象的方法
代码如下:

var $cr=$("#cr"); //jquery对象
var cr = $cr[0]; //dom对象 也可写成 var cr=$cr.get(0);
alert(cr.checked); //检测这个checkbox是否给选中
  • dom对象转换成jquery对象
    对于一个dom对象,只需要用$()把dom对象包装起来,就可以获得一个jquery对象了,方法为

$(dom对象);

代码如下:

var cr=document.getElementById("cr"); //dom对象
var $cr = $(cr); //转换成jquery对象

转换后可以任意使用jquery中的方法了.