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),即BA之后

      *  before(content):在每个匹配的元素之前插入内容例如A.before(B),即BA之前 

   
   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()

 

        
 
posted @ 2013-05-10 16:37  hacket520  阅读(212)  评论(0编辑  收藏  举报