锋利的jQuery | jQuery中的DOM操作

本文整理自锋利的jQuery(第二版)第三章

查找节点


var $li = $("ul li:eq(1)"); //获得元素节点
var li_text = $li.text();   //获得文本内容
var name = $li.attr("name") //查找属性节点
var class = $li.attr("class")   //查找属性节点

创建节点


var li_2 = $("<li></li>")   //创建元素节点
var li_2 = $("<li>香蕉</li>")   //创建文本节点
var li_2 = $("<li title="香蕉">香蕉</li>")   //创建属性节点
$("ul").append($li_1)

插入节点


$("ul").append($li_1)   //在ul元素内部末尾追加$li_1
appendTo()  //顺序相反
prepend()   //添加到内部的最前面
prependTo() //顺序相反
after()     //在元素后添加元素,是外部
insertAfter()   //顺序相反
before()    //前面添加
insertbefore()  //顺序相反

删除节点

remove()

  • 删除所有匹配的元素
  • 后代元素也会被删除
  • 可以通过参数选择性的删除元素
  • 该方法返回值指向被删除的节点,所以可以在以后利用

var $li = $("ul li:eq(1)"),ewmove()
$("ul").append($li)     //又被添加到ul

detach()

与 remove()的区别

  • 不会把匹配的元素从jQuery对象中删除 //不是和remove()一样吗?
  • 不会把绑定的事件,附加的数据删除

empty()

清空节点,可以清空元素中的所有后代元素.保留自身

复制节点

clone()

$("ul li").click(function(){
    $(this).clone().appendTo("ul")
})

默认情况下被复制的元素并不具备任何行为.我们可以通过为clone()方法传递一个布尔型参数,让他在复制的同时复制所绑定的事件.$(this).clone(true).appendTo("ul")

替换节点

p.replaceWith("<span>增加</span>")    //用span替换p
p.replaceAll("<span>增加</span>")    //完全相反 用p替换span

替换后,原先所绑定的事件和被替换的元素一起消失.需要在新元素上重新绑定.

包裹节点

$("span").warp("<p></p>")    //用p标签把span包裹起来
$("span").warpAll("<p></p>")    //用p标签把所有匹配的span元素包裹起来
$("span").warpInner("<p></p>")    //将每一个匹配的span元素的子内容(包括文本节点)用p标签包裹起来.

属性操作

通常通过attr()和prop()获取和设置属性.

官方建议:具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr().

$("label").attr("name") //获得属性
$("label").attr("name","增加") //设置属性
$("label").attr({"name","增加","value":"add"}) //同时设置多个属性
$("label").removeAttr("title") //删除属性
prop()  //用法相同
removeProp()

样式操作

$("p").attr("class","info") //用attr可以设置类,此时类只有info
$("p").addClass("info") //追加class
$("p").removeClass("info") //移除class
$("p").removeClass("info high") //同时移除两个class
$("p").removeClass() //移除所有class
$("p").toggleClass("class") //class类存在则移除,不存在则添加.妙用无穷啊!
$("p").hasClass("class") //返回true/false 判断是否含有某个class

设置和获取HTML、文本、值

$("label").html()   //得到html
$("lable")html("<span>删除</span>")   //设置html
$("label").text()   //得到label的文本内容
$("lable")html("删除")   //设置label的文本内容
$(":radio").val()   //得到表单的值
$(":radio").val("0")    //设置表单的值

遍历节点

$("ul").children()  //获得匹配元素的子元素集合
$("ul li:eq(0)").next()  //获得匹配元素的后面紧邻的匹配元素
$("ul li:eq(2)").prev()  //获得匹配元素的前面紧邻的匹配元素
$("ul li.active").siblings()  //获得匹配元素的前后所有的的匹配元素
//closest 取得最近的匹配元素 ,首先匹配自身,逐级向上匹配父元素。
$(document).click(function(e){
    $("e.target").closest("li").css("color","red")  //target 事件对象 最初触发事件的DOM对象
})
$("ul").parent()    //获得父元素
$("ul").parents("div")    //获得每个匹配元素的第一个div祖先元素
$("ul").find(".avtive") //后代 很常用

CSS-DOM操作

读取和设置style对象的各种属性

$("p").css("color") //获得p元素的样式颜色
$("p").css("color","red") //设置p元素的样式颜色
$("p").css({color:"red""font-size":"12px"}) //同时设置p元素的多个样式
$("p").css({color:"red""fontSize":"12px"}) //不要“-”时,采用驼峰式写法
$("p").height()
$("p").width()

offset()获得元素在当前视窗的相对偏移,返回值包含两个属性(top,left),只对可见元素有效


var offset = $("p").offset();
var top = offset.top;
var left = offset.left;

position()获得元素相对于第一个position不等于static的祖先元素的偏移量,返回值包含两个属性(top,left),只对可见元素有效


var position = $("p").position();
var top = position.top;
var left = position.left;

scrollTop()scrollLeft()获得滚动条距顶端和左侧的距离


var $p = $("p");
var scrollTop = $p.scrollTop(); //元素的滚动条距离顶端的距离
var scrollLeft = $p.scrollLeft();
$("textarea").scrollTop(300);   //元素的垂直滚动条滚动到指定位置
$("textarea").scrollLeft(300);   //元素的水平滚动条滚动到指定位置

其他

//单击选中文本框中的文字
$("input:text").on("click",function(){
    $(this).select();
})

猜你喜欢

转载自blog.csdn.net/dora_310/article/details/71598440
今日推荐