DOM是Document Object Model的缩写,意思是文档对象模型。根据W3C DOM规范,DOM是一种与浏览器、平台、语言无关的接口,使用该接口可以轻松地访问页面中的所以标准组件。
DOM操作可以分为3个方面,即DOM Core(核心)、HTML-DOM和CSS-DOM。
DOM Core并不专属于JavaScript,任何一种支持DOM的程序设计语言都可以使用它,它的用途并非仅限于处理网页,也可以用来处理任何一种使用标记语言写出来的文档,例如XML。
JavaScript中的getElementByI的()、getElementsByTagName()、getAttribute()等方法都是DOM Core的组成部分。
例如:
使用DOM Core来获取表单对象的方法:
document.getElementsByTagName(“form”);
使用DOM Core来获取某元素的src属性的方法:
element.getAttribute(“src”);
在使用JavaScript和DOM为HTML文件编写脚本时,有许多专属于HTML-DOM的属性。HTML-DOM的出现甚至比DOM Core还要早,它提供了一些更简明的记号来描述各种HTML元素的属性。
例如:
CSS-DOM是针对CSS的操作。
例如:设置某元素style对象字体颜色的方法:
element.style.color="red";
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml/DTD/xhtml-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>dom</title>
</head>
<body>
<p title="选择你喜欢的水果。">你最喜欢的水果是?</p>
<ul>
<li title="苹果">苹果</title>
<li title="橘子">橘子</title>
<li title="菠萝">菠萝</title>
</ul>
</html>
var $para = $(“p”);
var p_txt = $para.attr(“title”);
alert(p_txt);
3.2.3 插入节点
表3-1 插入节点的方法
方法 描述
append() 向每个匹配的元素内容追加内容。
appendTo() 将所以匹配的元素追加到指定的元素中。
prepend() 向每个匹配的元素内容内部前置内容。
prependTo() 将所有匹配的元素前置到指定的元素中。
after() 在每个匹配的元素之后插入内容
insertAfter() 将所有匹配的元素插入到指定元素后面。
before() 在每个匹配的元素之前插入内容
insertBefore() 将所有匹配的元素插入到指定的元素前面
var $li_1 = $(“
var $one_li = $(“ul li:eq(1)“);
var $two_li = $(“ul li:eq(2)“);
$two_li.insertBefore($one_li);
jQuery提供了两种删除节点的方法,即remove()和empty()。
当某个节点用remove()方法删除后,该节点所包含的所有后代节点将同时被删除。这个方法的返回值是一个指向已被删除的节点的引用,因此可以在以后再使用这些元素。
var $li = $("ul li:eq(1)").remove();
$li.appendTo("ul");//把刚才删除的节点又重新添加到<ul>元素里
remove()方法也可以通过传递参数来选择性地删除元素,jQuery代码如下:
$("ul li").remove("li[title!=菠萝]");
$("ul li").click(function(){
$(this).clone.appendTo("ul");//复制当前单击的节点并将其追加到<ul>元素中
})
复制节点后,被复制的新元素并不具有任何行为。如果需要新元素也具有复制功能(本例是单击事件),可以:
$(this).clone(true).appendTo("body");//注意参数true
在clone()方法中传递了一个参数true,它的含义是复制元素的同时复制元素所绑定的事件。因此钙元素的副本也同样具有复制功能。
要替换某个节点,jQuery提供了相应的方法,即replaceWith()和replaceAll().
$("p").replaceWith("<strong>你最不喜欢的水果是?</strong>");
replaceAll()方法与replaceWith()相同,只是颠倒了replaceWith()操作。如:
$("<strong>你最不喜欢的水果是?</strong>").replaceAll("p");
如果在替换之前,已经为元素绑定事件,替换后原先绑定的事件将会与被替换的元素一起消失,需要在新元素上重新绑定事件。