jQuery 中的 DOM 操作
DOM(Document Object Model—文档对象模型):一种与浏览器, 平台, 语言无关的接口, 使用该接口可以轻松地访问页面中所有的标准组件
DOM 操作的分类:
•DOM Core: DOM Core 并不专属于 JavaScript, 任何一种支持 DOM 的程序设计语言都可以使用它. 它的用途并非仅限于处理网页, 也可以用来处理任何一种是用标记语言编写出来的文档, 例如: XML
•HTML DOM: 使用 JavaScript 和 DOM 为 HTML 文件编写脚本时, 有许多专属于 HTML-DOM 的属性
•CSS-DOM:针对于 CSS 操作, 在 JavaScript 中, CSS-DOM 主要用于获取和设置 style 对象的各种属性
1、内部插入节点
* append(content) :向每个匹配的元素的内部的结尾处追加内容
* prepend(content):向每个匹配的元素的内部的开始处插入内容
html代码: <p>I would like to say: </p> js代码: $("p").prepend("<b>Hello 这是在最前面的吗</b>"); $("p").append("<b>Hello 这是在最后面的吗</b>"); 结果: Hello 这是在最前面的吗I would like to say: Hello 这是在最后面的吗
练习4:下拉列表框
2、外部插入节点
* after(content) :在每个匹配的元素之后插入内容,例如A.after(B),即B在A之后
* before(content):在每个匹配的元素之前插入内容 ,例如A.before(B),即B在A之前
3、查找节点及读取或设置属性操作
查找节点:
•查找属性节点: 通过 jQuery 选择器完成.
•查找属性节点: 查找到所需要的元素之后, 可以调用 jQuery 对象的 attr() 方法来获取它的各种属性值
创建元素/文本/属性节点
创建节点: 使用 jQuery 的工厂函数 $(): $(html); 会根据传入的 html 标记字符串创建一个 DOM 对象, 并把这个 DOM 对象包装成一个 jQuery 对象返回.
注意:
•动态创建的新元素节点不会被自动添加到文档中, 而是需要使用其他方法将其插入到文档中;
•当创建单个元素时, 需注意闭合标签和使用标准的 XHTML 格式. 例如创建一个<p>元素, 可以使用 $(“<p/>”) 或 $(“<p></p>”), 但不能使用 $(“<p>”) 或 $(“</P>”)
创建文本节点就是在创建元素节点时直接把文本内容写出来;
创建属性节点也是在创建元素节点时一起创建
删除所有/指定ID/指定样式的元素节点
remove(): 从 DOM 中删除所有匹配的元素, 传入的参数用于根据 jQuery表达式来筛选元素. 当某个节点用 remove() 方法删除后, 该节点所包含的所有后代节点将被同时删除.
这个方法的返回值是一个指向已被删除的节点的引用.
empty(): 清空节点 – 清空元素中的所有后代节点(不包含属性节点).
复制节点
clone(): 克隆匹配的 DOM 元素, 返回值为克隆后的副本. 但此时复制的新节点不具有任何行为.
clone(true): 复制元素的同时也复制元素中的的事件
替换节点
replaceWith(): 将所有匹配的元素都替换为指定的 HTML 或 DOM 元素
注意: 若在替换之前, 已经在元素上绑定了事件, 替换后原先绑定的事件会与原先的元素一起消失
属性操作
attr(): 获取属性和设置属性
•当为该方法传递一个参数时, 即为某元素的获取指定属性
•当为该方法传递两个参数时, 即为某元素设置指定属性的值
jQuery 中有很多方法都是一个函数实现获取和设置. 如: attr(), html(), text(), val(), css() 等.
removeAttr(): 删除指定元素的指定属性
样式操作
获取 class 和设置 class : class 是元素的一个属性, 所以获取 class 和设置 class 都可以使用 attr() 方法来完成.
追加样式: addClass()
移除样式: removeClass() --- 从匹配的元素中删除全部或指定的 class
切换样式: toggleClass() --- 控制样式上的重复切换.如果类名存在则删除它, 如果类名不存在则添加它.
判断是否含有某个样式: hasClass() --- 判断元素中是否含有某个 class, 如果有, 则返回 true; 否则返回 false
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>method_1.html</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type="text/css"> .myClass{ font-size:30px; color:red } </style> <script type="text/javascript" src="../js/jquery-1.9.1.js"></script> </head> <body> <div>无样式</div> <div class="myClass">有样式</div> <script type="text/javascript"> //$("div").first().addClass("myClass"); //$("div").last().removeClass("myClass"); //$("div").first().toggleClass("myClass"); //$("div").last().toggleClass("myClass"); //alert($("div").first().next().hasClass("myClass")==true?"有样式":"无样式"); </script> </body> </html>
设置和获取 HTML, 文本和值
读取和设置某个元素中的 HTML 内容: html() . 该方法可以用于 XHTML, 但不能用于 XML 文档
读取和设置某个元素中的文本内容: text(). 该方法既可以用于 XHTML 也可以用于 XML 文档.
读取和设置某个元素中的值: val() --- 该方法类似 JavaScript 中的 value 属性. 对于文本框, 下拉列表框, 单选框该方法可返回元素的值(多选框只能返回第一个值).如果为多选下拉列表框, 则返回一个包含所有选择值的数组
常用的遍历节点方法
取得匹配元素的所有子元素组成的集合: children(). 该方法只考虑子元素而不考虑任何后代元素.
取得匹配元素后面紧邻的同辈元素的集合:next();
取得匹配元素前面紧邻的同辈元素的集合:prev()
取得匹配元素前后所有的同辈元素: siblings()
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>method_1.html</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="../js/jquery-1.6.js"></script> </head> <body> <p>Hello</p> <div> <span> Hello Again <b> Bold </b> </span> </div> <p>And Again</p> <script type="text/javascript"> //alert($("div").children().first().html()); //alert($("div").first().next().text()); //alert($("div").first().prev().text()); //$("div").first().siblings().each(function(){ // alert($(this).text()); //}); </script> </body> </html>
text()忽略标签
html()整个标签看做一个整体 ie和firefox结果不一致
总结:
1 jQuery中DOM常用方法或属性 2 1)val():取得标签中value属性的值 3 2)html():取得标签内的内容 4 3)size()或length:取得数组的长度 5 4)each():该方法必须由jQuery对象调用(即数组对象),each(function)方法,会自动将数组中的每个元素自动调用 6 function函数 7 5)click(function) 8 6)dblclick(function) 9 ... ... 10 7)父.append(子),子元素位于父元素之后,但依然是父子关系 11 8)父.prepend(子),子元素位于父元素之前,但依然是父子关系 12 9)text():取得标签的内容,优先考虑html()方法
1 jQuery常用操作DOM的API 2 1)jQuery对象.addClass().addClass(); 3 2)removeClass() 4 3)toggleClass() 5 4)hasClass() 6 5)val(),如果将val()设置给一个select/raido/checkbox元素,内容取决于option元素的value或显示的内容值,value优先 7 6)text()和html():text()取得是标签之间的内容,html()不仅含有内容,还可能含有标签 8 7)prev() 9 8)siblings():要能产生一个数组 10 9)show()和hide() 11 10)fadeIn()和fadeOut()
by hacket