[jQuery]DOM操作
来源:互联网 发布:张思然淘宝店名字 编辑:程序博客网 时间:2024/05/20 16:12
1. DOM操作分类
1.1 DOM Core
DOM Core不专属于JavaScript,任何支持DOM的程序设计语言都可以使用。JavaScript中的getElementById()、getElemetsByTagName()、getAttribute()和setAttribute()等方法,都是DOM Core的组成部分。
1.2 HTML DOM
在使用JavaScript和DOM为HTML文件编写脚本时,有许多专属于HTML-DOM的属性。它提供了一些更简明的记号来描述各种HTML元素的属性,例如document.forms或element.src。有些方法即可以用DOM Core来实现,也可以使用HTML-DOM实现。
1.3 CSS DOM
CSS DOM 是针对CSS的操作。在JavaScript中,CSS DOM技术的主要作用是获取和设置style对象的各种属性,通过改变style对象的各种属性,可以使网页呈现出各种不同的效果。
2. DOM操作
2.1 查找节点
使用jQuery在文档树上查找节点,可通过jQuery选择器来完成,例如:
var
$li = $(
"ul li:eq(1)"
);
var
li_txt = $li.text();
alert(li_txt);
利用jQuery选择器查找到所需元素后,就可以使用attr()方法来获取它的各种属性值,例如:
var
$para = $(
"p"
);
var
p_txt = $para.attr(
"title"
);
alert(p_txt);
2.2 创建节点
如果要创建两个<li>元素节点,并且要把它们作为<ul>元素节点的子节点添加到DOM节点树上,可使用工厂函数$()来完成,格式如下:
$(html);
$(html)方法会根据传入的HTML标记字符串,创建一个DOM对象,并将这个DOM对象包装成一个jQuery对象后返回,例如:
var
$li_1 = $(
"<li></li>"
);
var
$li_2 = $(
"<li></li>"
);
$(
"ul"
).append($li_1);
$(
"ul"
).append($li_2);
创建属性节点与创建文本节点类似,也是直接在创建元素节点时一起创建,例如:
var
$li_1 = $(
"<li title="
t1
">t1</li>"
);
var
$li_2 = $(
"<li title="
t2
">t2</li>"
);
$(
"ul"
).append($li_1);
$(
"ul"
).append($li_2);
2.3 插入节点
将新创建的节点插入某个文档的方法有多种,如下表:
方法描述示例append()向每个匹配的元素内部追加内容。$("p").append("<b>me</b>");appendTo()将所有匹配的元素追加到指定的元素中。$("<b>me</b>").appendTo("p");prepend()向每个匹配的元素内部前置内容。$("p").prepend("<b>me</b>");prependTo()将所有匹配的元素前置到指定的元素中。$("<b>me</b>").prependTo("p");after()在每个匹配的元素之后插入内容。$("p").after("<b>me</b>");insertAfter()将所有匹配的元素插入到指定元素的后面。$("<b>me</b>").insertAfter("p");before()在每个匹配的元素之前插入内容。$("p").before("<b>me</b>");insertBefore()将所有匹配的元素插入到指定的元素的前面。$("<b>me</b>").insertBefore("p");2.4 删除节点
如果文档中某一个元素多余,那么应将其删除。jQuery提供了两种删除节点的方法,即remove()和empty()。
remove()方法的作用是从DOM中删除所有匹配的元素,例如:
$(
"ul li:eq(1)"
).remove();
当某个节点用remove()方法删除后,该节点所包含的所有后代节点将同时被删除,这个方法的返回值是一个指向已被删除的节点的引用。
empty()方法的作用是清空节点,例如:
$(
"ul li:eq(1)"
).empty();
当运行代码后,第2个<li>元素的内容被清空了,只剩下<li>标签默认的圆点符号。
2.5 复制节点
如果需要复制一个元素,可以使用clone()来完成,例如:
$(
"ul li"
).click(
function
(){
$(
this
).clone().appendTo(
"ul"
);
})
复制节点后,被复制的新元素并不具有任何行为,如果需要新元素也具有复制功能,可以在clone()方法中传递一个参数true,例如:
$(
"ul li"
).click(
function
(){
$(
this
).clone(
true
).appendTo(
"ul"
);
})
2.6 替换节点
如果要替换节点,jQuery提供了相应的方法,即replaceWith()和replaceAll()。replaceWith()方法的作用是将所有匹配的元素都替换成指定的HTML或者DOM元素,例如:
$(
"p"
).replaceWith(
"<strong>Name</strong>"
);
也可以使用另一个方法replaceAll()来实现,该方法与replaceWith()方法的作用相同,只是颠倒了replaceWith()操作,例如:
$(
"<strong>Name</strong>"
).replaceAll(
"p"
);
2.7 包裹节点
如果要将某个节点用其他标记包裹起来,jQuery提供了相应的方法,即wrap(),例如:
$(
"strong"
).wrap(
"<b></b>"
);
wrapAll()方法会将所有匹配的元素用一个元素来包裹,它不同于wrap()方法,wrap()方法是将所有的元素进行单独的包裹,例如:
$(
"strong"
).wrapAll(
"<b></b>"
);
wrapInner()方法将每一个匹配的元素的子内容用其他结构化的标记包裹起来,例如:
$(
"strong"
).wrapInner(
"<b></b>"
);
2.8 属性操作
在jQuery中,用attr()方法来获取和设置元素属性值,例如:
var
p_txt = $(
"p"
).attr(
"title"
);
如果要设置元素属性值,也可以使用同一个方法,不同的是,需要传递两个参数,例如:
$(
"p"
).attr(
"title"
,
"my title"
);
在某些情况下,要删除文档中某个元素的特定属性,可以使用removeAttr()方法来完成,例如:
$(
"p"
).removeAttr(
"title"
);
2.9 样式操作
使用attr()方法可以获取元素的class,例如:
var
p_class = $(
"p"
).attr(
"class"
);
也可以使用attr()方法来设置class,例如:
$(
"p"
).attr(
"class"
,
"high"
);
在大多数情况下,它是将原来的class替换为新的class,而不是在原来的基础上追加新的class。jQuery提供了专门的addClass()方法来追加样式,例如:
$(
"p"
).addClass(
"another"
);
如果用户要删除class的某个值,可以使用与addClass()方法相反的removeClass()方法来完成,例如:
$(
"p"
).removeClass(
"high"
);
当它不带参数时,就会将class的值全部删除,例如:
$(
"p"
).removeClass();
jQuery还提供了一个toggleClass()方法控制样式上的重复切换,如果类名存在则删除它,如果类名不存在则添加它,例如:
$(
"p"
).toggleClass(
"high"
);
hasClass()可以用来判断元素中是否含有某个class,如果有,则返回true,否则返回false,例如:
$(
"p"
).hasClass(
"high"
);
2.10 设置和获取HTML、文本和值
html()方法类似于javascript中的innerHTML属性,可以用来读取或者设置某个元素中的HTML内容,例如:
var
p_html = $(
"p"
).html();
如果需要设置某元素的HTML,也可以使用该方法,例如:
$(
"p"
).html(
"<strong>Name</strong>"
);
text()方法类似于javascript中的innerText属性,可以用来读取或设置某个元素中的文本内容,例如:
var
p_text = $(
"p"
).text();
val()方法类似于javascript中的value属性,可以用来设置和获取元素的值,例如:
$(
"#username"
).focus(
function
(){
var
text_value = $(
this
).val();
alert(text_value);
});
2.11 遍历节点
children()方法用于取得匹配元素的子元素集合,例如:
$(
"p"
).children();
next()方法用于取得匹配元素后面紧邻的同辈元素,例如:
$(
"p"
).next();
prev()方法用于取得匹配元素前面紧邻的同辈元素,例如:
$(
"p"
).prev();
siblings()方法用于取得匹配元素前后所有的同辈元素,例如:sli
$(
"p"
).siblings();
closet()方法用来取得最近的匹配元素,首先检查当前元素是否匹配,如果匹配则直接返回,如果不匹配则向上查找父元素,直到找到匹配选择器的元素,如果没有找到,则返回一个空的jQuery对象,例如:
$(e.target).closet(
"li"
).css(
"color"
,
"red"
);
2.12 CSS-DOM操作
CSS-DOM技术简单来说就是读取和设置style对象的各种属性,可以直接利用css()方法获取元素的样式属性,例如:
$(
"p"
).css(
"color"
);
也可以直接利用css()方法设置某个元素的单个样式,例如:
$(
"p"
).css(
"color"
,
"red"
);
在jQuery中还有一个height()方法,可以取得匹配元素当前计算的高度值,例如:
$(
"p"
).height();
与height()方法对应的还有一个width()方法,可以取得匹配元素的宽度值,例如:
$(
"p"
).width();
CSS-DOM中,还有以下几个经常使用的方法。offset()方法的作用是获取元素在当前视窗的相对偏侈,其中返回的对象包含两个属性,即top和left,它只对可见元素有效,例如:
var
offset = $(
"p"
).offset();
var
left = offset.left;
var
top = offset.top;
position()方法的作用是获取元素相对于最近的一个position样式属性设置relative或absolute的祖父节点的相对偏移,它返回的对象也包括两个属性,即top和left,例如:
var
position = $(
"p"
).position();
var
left = position.left;
var
top = position.top;
scrollTop()方法和scrollLeft()方法的作用分别是获取元素的滚动条距顶端的距离和距左侧的距离,例如:
var
$p = $(
"p"
);
var
scrollTop = $p.scrollTop();
var
scrollLeft = $p.scrollLeft();
另外,可以为这两个方法指定一个参数,控制元素的滚动条滚动到指定位置,例如:
$(
"textarea"
).scrollTop(300);
$(
"textarea"
).scrollLeft(300);
- 【jQuery】jQuery操作DOM
- jQuery 的dom操作
- jQuery中的DOM操作
- jQuery中的DOM操作
- jQuery中的DOM操作
- jQuery DOM常见操作
- jQuery DOM操作
- jquery操作dom
- jQuery 的 DOM操作
- JQuery中的DOM操作
- Jquery Dom操作
- jQuery的DOM操作
- JQuery操作DOM
- Jquery操作DOM节点
- Jquery Dom操作
- JQuery的Dom操作
- JQuery操作DOM
- jQuery操作DOM
- UVA156
- 如何构建离线Google地图
- hdu-数塔
- POJ 2115 C Looooops(扩展欧几里得)
- 推荐两个云笔记软件【有道云笔记】和【为知笔记】
- [jQuery]DOM操作
- What Are You Talking About
- Android的callback(一)
- POJ 1459 Power Network
- 定义函数模板
- hdu 1083 Courses
- hdu4527小明系列故事——玩转十滴水 (BFS+DFS)
- udhcp详解(七)——udhcp报文
- C#get Set