《锋利的jQuery》读书笔记 第3章 jQuery中的DOM操作
来源:互联网 发布:淘宝流量币从哪进货的 编辑:程序博客网 时间:2024/05/29 02:19
1.DOM操作分为3个方面:DOM Core(核心)、HTML-DOM和CSS-DOM:
1.1 DOM Core并不属于JavaScript,任何一种支持DOM的程序设计语言都可以使用它。它的用途并非仅限于处理网页,也可以用来处理任何一种使用标记语言编写出来的文档,例如XML
JavaScript中的getElementById()、getElementsByTagName()、getAttribute()和setAttribute()等方法,都是DOM Core的组成部分
1.2 HTML-DOM:HTML-DOM的出现甚至比DOM Core还要早,它提供了一些更简明的记号来描述各种HTML元素的属性。
1.3 CSS-DOM:CSS-DOM是针对CSS的操作。在JavaScript中,CSS-DOM技术的主要作用是获取和设置style对象的各种属性。
2.jQuery查找节点:
可以使用第2章的方法在查找节点,找到元素节点后,可以使用attr()方法来获取它的各种属性的值,当attr()方法用来获取属性的值时,它接受一个参数,参数为要查询的属性的名字。
3.jQuery创建节点:
在jQuery可以使用jQuery的工厂函数$()来完成创建节点:$(html);
例如:
var $li_1 = $("<li></li>");
var $li_2 = $("<li>香蕉</li>");
var $li_3 = $("<li title='香蕉'>香蕉</li>");
4.jQuery插入节点:
方法描述示例append()向每个匹配的元素内部追加内容HTML代码:
<p>我想说:</p>
jQuery代码:
$("p").append("<b>你好</b>");
结果:
<p>我想说:<b>你好</b></p>appendTo()将所有匹配的元素追加到指定的元素中。
实际上,使用该方法是颠倒了
常规的$(A).append(B)的操作,
即不是将B追加到A中,
而是将A追加到B中
实际上,使用该方法是颠倒了
常规的$(A).prepend(B)的操作,
即不是将B前置到A中,
而是将A前置到B中
实际上,使用该方法颠倒了
常规的$(A).after(B)的操作,
即不是将B插入到A后面,
而是将A插入到B后面
实际上,使用该方法颠倒了
常规的$(A).before(B)的操作,
即不是将B插入到A前面,
而是将A插入到B前面
<p>我想说:</p>
jQuery代码:
$("p").append("<b>你好</b>");
结果:
<p>我想说:<b>你好</b></p>appendTo()将所有匹配的元素追加到指定的元素中。
实际上,使用该方法是颠倒了
常规的$(A).append(B)的操作,
即不是将B追加到A中,
而是将A追加到B中
HTML代码:
<p>我想说:</p>
jQuery代码:
$("<b>你好</b>").appendTo("p");
<p>我想说:</p>
jQuery代码:
$("<b>你好</b>").appendTo("p");
结果:
<p>我想说:<b>你好</b></p>
prepend()向每个匹配的元素内部的前面添加内容<p>我想说:<b>你好</b></p>
HTML代码:
<p>我想说:</p>
jQuery代码:
$("p").prepend("<b>你好</b>");
结果:
<p><b>你好</b>我想说:</p>
prependTo()将所有匹配的元素前置到指定的元素中。<p>我想说:</p>
jQuery代码:
$("p").prepend("<b>你好</b>");
结果:
<p><b>你好</b>我想说:</p>
实际上,使用该方法是颠倒了
常规的$(A).prepend(B)的操作,
即不是将B前置到A中,
而是将A前置到B中
HTML代码:
<p>我想说:</p>
jQuery代码:
$("<b>你好</b>").prependTo("p");
<p>我想说:</p>
jQuery代码:
$("<b>你好</b>").prependTo("p");
结果:
<p><b>你好</b>我想说:</p>
after()在每个匹配的元素之后插入内容<p><b>你好</b>我想说:</p>
HTML代码:
<p>我想说:</p>
jQuery代码:
$("p").after("<b>你好</b>");
结果:
<p>我想说:</p><b>你好</b>
insertAfter()将所有匹配的元素插入到指定元素的后面。<p>我想说:</p>
jQuery代码:
$("p").after("<b>你好</b>");
结果:
<p>我想说:</p><b>你好</b>
实际上,使用该方法颠倒了
常规的$(A).after(B)的操作,
即不是将B插入到A后面,
而是将A插入到B后面
HTML代码:
<p>我想说:</p>
jQuery代码:
$("<b>你好</b>").insertAfter("p");
<p>我想说:</p>
jQuery代码:
$("<b>你好</b>").insertAfter("p");
结果:
<p>我想说:</p><b>你好</b>
before()在每个匹配的元素之前插入内容<p>我想说:</p><b>你好</b>
HTML代码:
<p>我想说:</p>
jQuery代码:
$("p").before("<b>你好</b>");
<p>我想说:</p>
jQuery代码:
$("p").before("<b>你好</b>");
结果:
<b>你好</b><p>我想说:</p>
insertBefore()将所有匹配的元素插入到指定的元素的前面。<b>你好</b><p>我想说:</p>
实际上,使用该方法颠倒了
常规的$(A).before(B)的操作,
即不是将B插入到A前面,
而是将A插入到B前面
HTML代码:
<p>我想说:</p>
jQuery代码:
$("<b>你好</b>").insertBefore("p");
<p>我想说:</p>
jQuery代码:
$("<b>你好</b>").insertBefore("p");
结果:
<b>你好</b><p>我想说:</p>
<b>你好</b><p>我想说:</p>
5.删除节点
使用remove()方法删除所有匹配的元素
例如:
$("ul li:eq(1)").remove();
使用empyt()方法清空节点,它能清空元素中的所有后代节点,但不包括元素本身的属性节点
6.复制节点
使用clone()方法来复制节点
例如:
$("ul li:eq(1)").clone().appendTo("ul");
需要注意的是被复制的新元素并不具有任何行为,如果需要新元素也具有和原来的元素相同的行为,可以将true参数传给clone()函数,如下所示:
$("ul li:eq(1)").clone(true).appendTo("ul");
7.替换节点
可以使用replaceWith()或者replaceAll()函数来替换节点
例如:
$("p").replaceWith("<strong> 你最不喜欢的水果是?</strong>");
或者:
$("<strong> 你最不喜欢的水果是?</strong>").replaceAll("p");
以上语句都是将所有的<p>标签换成<strong> 你最不喜欢的水果是?</strong>
8.包裹节点
8.1 wrap():可以使用warp()函数来将某个节点用其他标记包裹起来
例如:
HTML代码:
<strong> 你最不喜欢的水果是?</strong>
jQuery代码:
$("strong").wrap("<b></b>");
则HTML代码变成:
<b><strong> 你最不喜欢的水果是?</strong></b>
8.2 wrapAll():该方法会将所有匹配的元素用一个元素来包裹起来,需要注意它和wrap()的区别
例如:
HTML代码:
<strong> 你最不喜欢的水果是?</strong>
<strong> 你最不喜欢的水果是?</strong>
jQuery代码:
$("strong").wrapAll("<b></b>");
则HTML代码变成:
<b><strong> 你最不喜欢的水果是?</strong>
<strong> 你最不喜欢的水果是?</strong></b>
如果是用wrap()方法,则HTML代码变成:
<b><strong> 你最不喜欢的水果是?</strong></b>
<b><strong> 你最不喜欢的水果是?</strong></b>
如果HTML代码为:
<strong> 你最不喜欢的水果是?</strong>
<p>test</p>
<strong> 你最不喜欢的水果是?</strong>
使用jQuery代码:
$("strong").wrapAll("<b></b>");
后HTML变成:
<b><strong> 你最不喜欢的水果是?</strong>
<strong> 你最不喜欢的水果是?</strong></b>
<p>test</p>
8.3 wrapInner()方法:该方法是将匹配的元素的子内容用其他标记包裹起来
例如:
HTML代码:
<strong> 你最不喜欢的水果是?</strong>
jQuery代码:
$("strong").wrapInner("<b></b>");
则HTML代码变成:
<strong><b> 你最不喜欢的水果是?</b></strong>
9.属性操作
9.1 获取/设置属性:可以用attr()方法来设置或者获取属性的值
例如:
var p_txt = $("p").attr("title"); #获取匹配的第一个<p>的title属性
$("p").attr("title", "test title"); #将所有<p>的title属性的值设置为"test title"
$("p").attr({"title":"test title", "name":"test name"}); #设置多个属性
9.2 删除属性:可以用removeAttr(attributeName)来删除属性
10.样式操作
10.1 获取和设置样式:可以通过使用attr()方法来获取和设置class属性的方法来完成样式的获取和设置
10.2 追加样式:通过addClass(addClassName)来追加样式
10.3 移除样式:通过removeClass()方法来移除样式
例如:
$("p").removeClass("high"); # 移除单个样式
$("p").removeClass("high another"); # 移除多个样式
$("p").removeClass() # 移除所有样式
10.4 切换样式:toggleClass(className);如果classNames存在不删除它,如果不存在则添加此样式
10.5 判断是否含有某个样式:hasClass(className)
11.设置和获取HTML、文本和值
11.1 html()方法,如果调用无参数版本则返回元素包含的html代码,如果调用带参数版本则设置标签所包含的html的值
11.2 text()方法,如果调用无参数版本则返回元素包含的文本内容,如果调用带参数版本则设置标签所包含的文本内容
11.3 val()方法,此方法类似于JavaScript中的value属性,可以用来设置和获取元素的值
12.遍历节点:
12.1 childrens()
12.2 next()
12.3 prev()
12.4 siblings() 获取匹配元素前后所有的同辈元素
12.5 closest() 获取最近的匹配元素,首先检查当前元素是否匹配,如果匹配则直接返回元素本身。如果不匹配则向上查找父元素,逐级向上直到找到匹配选择器的元素。如果什么都没找到则返回一个空的jQuery对象。
--------------------------------------------------
author: cs_cjl
website: http://blog.csdn.net/cs_cjl
--------------------------------------------------
author: cs_cjl
website: http://blog.csdn.net/cs_cjl
--------------------------------------------------
13.CSS-DOM技术简单来说就是读取和设置style对象的各种属性。style属性很有用,但最大不足就是无法通过它来提取通过外部CSS设置的样式信息,而在jQuery中,可以通过css()方法来获取元素的样式属性,而无论它是通过外部导入,还是直接拼接在HTML元素里。也可以通过css()方法设置单个或者多个样式属性(参数和attr()方法一样)
14.CSS-DOM中常用的方法:
14.1 height()
14.2 width()
14.3 offset()
14.4 position()
14.5 scrollTop()
14.6 scrollLeft()
- 《锋利的jQuery》读书笔记 第3章 jQuery中的DOM操作
- 锋利的jQuery读书笔记-第3章 jQuery中的DOM操作
- 锋利的Jquery【读书笔记】 -- 第三章 jQuery中的DOM操作
- 《锋利的jQuery》学习笔记---第3章 jQuery中的DOM操作
- 锋利的jQuery | jQuery中的DOM操作
- 锋利的jQuery(jQuery中的DOM操作)
- 锋利的jQuery-第三章 jQuery中的DOM操作
- 《锋利的jQuery》第三章、jQuery中的DOM操作
- 《锋利的jQuery》读书笔记第三章(DOM操作)
- 锋利的jquery读书笔记---jquery的dom操作
- 【锋利的JQuery】0x03 JQuery中的DOM操作
- 学习笔记《锋利的jQuery》-jQuery中的DOM操作
- 锋利的jquery--CH3 jquery中的dom操作
- 《锋利的JQuery》读书笔记——第三章 JQuery的DOM操作
- 《锋利的jQuery》读书笔记 第5章 jQuery对表单、表格的操作及更多应用
- 锋利的jQuery读书笔记-第5章 jQuery对表单、表格的操作及更多应用
- 《锋利的jQuery》读书笔记 第1章 认识jQuery
- 《锋利的jQuery》读书笔记 第2章 jQuery选择器
- Maven_Maven的多模块(Multi-Module)工程的pom编写
- linux 域名转ip
- uboot系列之----Uboot配置过程详细分析
- 面向对象_03_多态
- 二叉搜索树
- 《锋利的jQuery》读书笔记 第3章 jQuery中的DOM操作
- 简单的内存分配
- 阿里云 安装mysql
- MongoDB和MySQL性能测试及其结果分析
- J2ME开发手机游戏物理模型之抛物线
- 这几天关于dwr的一些心得
- 今天无聊弄得C++
- tegra平台的camera驱动应用
- Spring整合hibernate,使用HibernateTemplate的save()方法不起作用问题