`
yeshaoting
  • 浏览: 686140 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[随记]锋利的jQuery 第三章 jQuery中的DOM操作

 
阅读更多

 

第三章 jQuery中的DOM操作

 

DOM解决了Netscape的JavaScript和Microsoft的JScript之间的冲突,给予了Web设计师和开发者事与一套标准的方法,让他们能够轻松获取和操作网页中的数据、脚本和表现层对象。

 

3.1 DOM操作的分类
一般来说,DOM操作分为3个方面,即DOM Core(核心)、HTML-DOM和CSS-DOM。

1. DOM Core
JavaScript中的getElementById()、getElementsByTagName()、getAttribute()和setAttribute()等方法,这些都是DOM Core的组成部分。

 

2. HTML_DOM
提供一些更简明的记号来描述各种HTML元素的属性。
例如:
使用HTML-DOM来获取表单对象的方法:
document.forms  //获取一个forms对象
element.src   //获取元素的src属性

HTML_DOM的代码通常比较简短,不过它只能用来处理Web文档。

 

3. CSS_DOM
CSS_DOM是针对CSS的操作。在JavaScript中,CSS_DOM技术的主要作用是获取和设置style对象的各种属性。
例如:
element.style.color = "red";

 

3.2 jQuery中的DOM操作
每一张网页都能用DOM表示出来,而每一份DOM都可以看作一棵DOM树。对DOM的各种操作都围绕DOM树而展开。

 

3.2.1 查找节点
1. 查找元素节点
使用jQuery在文档树上查找节点可能通过jQuery选择器来完成。

 

2. 查找属性节点
使用attr()方法完成。

 

3.2.2 创建节点
创建节点可以使用jQuery的工厂函数$()来完成。格式如下:
$(html);

 

$(html)方法会根据传入的HTML标记字符串,创建一个DOM对象,并将这个DOM对象包装成一个jQuery对象后返回。

无论$(html)中HTML代码多么复杂,都要使用相同的方式来创建。

 

例如:
var $li_ = $("<li title='雪梨'>雪梨</li>");


3.2.3 插入节点
append()
appendTo()

prepend()
prependTo()

after()
insertAfter()

before()
insertBefore()





 
3.2.4 删除节点
jQuery提供了两种删除节点的方法,即remove()和empty()。
//$li.remove();  //删除整个节点
//$li.empty();  //只是清空节点文本,不删除节点

 

3.2.5 复制节点
jQuery提供clone()方法来完成节点复制。
在clone()方法中传递了一个参数true,它的含义是复制元素的同时复制元素中所绑定的事件。

 

3.2.6 替换节点
如果要替换某个节点,jQuery提供了相应的方法,即replaceWith()和replaceAll()。

 

replaceWith()方法的作用是将所有匹配的元素都替换成指定的HTML或者DOM元素。
如果在替换之前,已经为元素绑定事件,替换后原先绑定的事件将会替换的元素一起消失,需要在新元素上重新绑定事件。

 

3.2.7 包裹节点
如果要将某个节点用其他标记包裹起来,jQuery提供了相应的方法,即wrap()。

包裹节点操作还有其他两个方法,即wrapAll()和wrapInner()。
wrap()是将所有的元素进行单独的包裹,而wrapAll()是将所有元素包裹在一起。wrapInner()将每一个匹配的元素的子内容(包括文本节点)用其他结构化的标记包裹起来。

 

例如:
wrapAll()效果:
<strong title="选择你喜欢的水果">
 <p title="选择你喜欢的水果">选择你喜欢的水果</p>
 <p title="选择你喜欢的水果">选择你喜欢的水果</p>
</strong>

 

wrap()效果:
<strong title="选择你喜欢的水果">
 <p title="选择你喜欢的水果">选择你喜欢的水果</p>
</strong>
<strong title="选择你喜欢的水果">
 <p title="选择你喜欢的水果">选择你喜欢的水果</p>
</strong>

 

wrapInner()效果:
<p title="选择你喜欢的水果">
 <strong title="选择你喜欢的水果">选择你喜欢的水果</strong>
</p>
<p title="选择你喜欢的水果">
 <strong title="选择你喜欢的水果">选择你喜欢的水果</strong>
</p>


3.2.8 属性操作
在jQuery中,用attr()方法来获取和设置元素属性,removeAttr()方法来删除元素属性。

 

如果要获取元素属性,只需要给attr()方法传递一个参数,即属性名称。
如果要设置元素属性,需要给attr()方法传递二个参数,即属性名称和对应的值。

使用removeAttr()方法删除文档特定属性。

 

3.2.9 样式操作
addClass()追加样式



 
removeClass()移除样式
toggle(fn,fn,...):交替执行代码,主要是控制行为上的重复切换。
toggleClass():控制样式的重复切换。如果类名存在则删除它,如果类名不存在则添加它。
hasClass()可以用来判断元素中是否含有某个class,如果有,则返回true,否则返回false。实际jQuery内部是调用了is()方法来完成这个功能的。


例如:
$("p").hasClass("another")等价于$("p").is(".another") //is("." + class)

 

3.2.10 设置和获取HTML、文本和值
html()类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中上的HTML内容。
可以用于XHTML文档,但是不能用于XML文档。

 

text()类似于JavaScript中的innerText属性,可以用来读取或者设置某个元素中的文本内容。


1)JavaScript中的innerText属性并不能在Firefox浏览器下运行,而jQuery的text()方法支持所有的浏览器。
2)text()方法对HTML文档和XML文档都有效。

 

 

 

 

val()类似于Javascript中的value属性,可以用来设置和获取元素的值。如果元素为多选,则返回一个包含所有有选择的值的数组。
val()还能使得select、checkbox、radio相应的选项被选中。

 

focus()和blur()方法相当于JavaScript中的onfocus()方法和onblur()方法。

 

defaultValue属性包含表单元素的初始值。

 

3.2.11 遍历节点
children()用来取得匹配元素的“直接”子元素集合。只考虑直接子元素而不考虑任何后代元素。

next()取得匹配元素后面紧邻的同辈元素。

prev()取得匹配元素前面紧邻的同辈元素。

silibings()取得匹配元素前后面所有的同辈元素。

 

3.2.12 CSS-DOM操作
CSS-DOM技术简单来说就是读取和设置style对象的各种属性。style无法提取到通过外部CSS设置的样式信息,然而在jQuery中,用css()可以完成。

在css()方法中,如果属性中带有"-"符号,则该符号后面的单词要大写代替"-"。
建议都加上引号,养成良好的习惯。


例如:
$("p").css("font-size", "30px")
$("p").css("fontSize", "30px")

$("p").css(fontSize: "30px")   //错误,不存在这样的函数
$("p").css(fontSize, "30px")   //错误,css(name) //name类型为String

$("p").css({"font-size": "30px"})  //驼峰法 css(properties)
$("p").css({fontSize: "30px"})   //驼峰法 css(properties) //大写代替"-"


height()方法可以用来获取window和document的高度。


css("height")获取的高度值与样式的设置有关,可能会得到"auto",也可能得到"10px"之类的字符串;而height()方法获取的高度值则是元素在页面中的实际高度,与样式的设置无关,并且不带单位。

 

 

 

 

offset()获取元素在当前视窗的相对偏移,其中返回的对象包含两个属性,即top和left,它只对可见元素有效。

 

position()获取元素相对于最近的一个position样式属性设置为relative或者absolute的祖父节点的相对偏移,与offset()一样,它返回的对象也包括两个属性,即top和left。

 

scrollTop()和scrollLeft()
这两个方法的作用分别是获取元素的滚动条距顶端的距离和距左侧的距离。
可以为这两个方法指定一个参数,控制元素的滚动条滚动到指定位置。

 

3.3 案例研究 某网站的超链接和图片提示效果
几个问题:
1. 首先是当鼠标滑过后,<a>标签中的title属性的提示也会出现;
解决方法:
在鼠标滑入时,保存对象title属性值,然后置空title属性值或者移除title属性。
在鼠标滑出时,再重新设置对象title属性值。

 

2. 其次是设置x坐标和y坐标的问题,由于自制的提示与鼠标的距离太近,有时候会引起无法提示的问题(鼠标焦点变化引起mouseout事件)。
解决办法:
重新设置提示元素的top和left值,为top增加了10px,为left增加了20px。

 

3. 最后当鼠标在超链接上移动时,提示效果跟随问题。为超链接添加一个mousemove事件。

  • 大小: 39.5 KB
  • 大小: 47.2 KB
  • 大小: 55.4 KB
  • 大小: 25.9 KB
  • 大小: 41.2 KB
分享到:
评论

相关推荐

    一些有关哈希函数的随记

    这篇随记将探讨哈希函数的基本概念、性质以及在实际应用中的重要性。 哈希函数,也称为散列函数,是一种特殊的算法,它将任意长度的输入(也称为预映射或消息)转化为固定长度的输出,这个输出通常被称为哈希值或...

    随记_电气_

    【标题】:“随记_电气_”提示我们这是一份关于电气工程领域的个人笔记或学习心得,可能包含了一些作者在学习或实践中积累的电气知识。 【描述】:“电气相关的知识,随手写的,不知道行不行11111”表明这份文档...

    互联网公司实习日记随记参考.pdf

    互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf

    linux net 管理随记

    linux net 管理随记,留着个人备忘

    c++随记.docx

    ### C++ 随记知识点总结 #### 一、内存管理与 new/delete 操作符 在 C++ 中,`new` 和 `delete` 是用于动态内存分配的关键字。`new` 用于在堆区分配内存,`delete` 用于释放之前通过 `new` 分配的内存。使用 `new`...

    c#随记.docx

    C#是专为.NET框架设计的,因此在.NET环境中具有极高的兼容性和可操作性。.NET Framework包含了公共语言运行时(CLR)和框架类库集(FCL)。CLR是程序执行的基础,它负责管理程序的运行,而FCL则提供了丰富的类库供...

    2021-2022年收藏的精品资料辛辛那提1000维修随记.doc

    - 1952年,世界上第一台数控机床诞生,由该公司制造,是直线插补连续控制的三坐标铣床。 - ACRAMATIC系列始于20世纪60年代,发展出多种型号,如A900、A850、A950等。 - A900系统在1981年推出,具备自诊断功能和四...

    NativeJS随记 - 浅析JavaScript Events

    标题中的“NativeJS随记 - 浅析JavaScript Events”表明这篇博客主要讨论的是JavaScript中的事件处理机制。JavaScript事件是Web开发中的重要组成部分,它允许我们响应用户的交互或浏览器的内部变化。在这里,我们将...

    EHCache的使用随记

    **EHCache的使用随记** EHCache是一款广泛应用于Java环境中的高效、易用且功能丰富的内存缓存系统。它能够显著提升应用性能,通过将常用数据存储在内存中,避免了反复从数据库读取,降低了I/O延迟。本文将探讨...

    git随记 git

    git随记 git

    网络原理随记.pdf

    计算机网络原理随记 在本资源中,我们将讨论计算机网络的基本概念、发展历程、网络架构、协议栈、数据传输、网络互通、安全性等方面的知识点。 计算机网络的基本概念 计算机网络是指将多个计算机设备连接起来,以...

    随记:flex发送XML到servlet

    标题“随记:flex发送XML到servlet”指的是在Flex应用程序中向Java Servlet发送XML数据的过程,这通常涉及到客户端与服务器端的交互。Flex是一种基于Adobe AIR或Flash Player运行时的开发框架,常用于创建富互联网...

    面试随记???随时更新

    面试随记???随时更新

    Python 文件操作随记

    fil.seek(3, 0) # 将指针移动到文件开头后的第三个字节 ``` 文件关闭使用`close()`方法,确保文件资源得到释放。 在处理文件时,还需要注意异常处理,例如使用`try/except`语句防止因文件不存在或权限问题导致的...

    随记app,微博与博客整合

    随记App是一款集成微博与博客功能的毕业设计项目,旨在为用户提供一个统一的平台来管理和分享他们的日常思考和生活点滴。这个项目分为客户端和服务端两部分,分别实现了用户交互界面和后台数据处理。 在Android...

    JSP PDF打印 随记 复杂模板设计

    本篇随记主要探讨的是如何在JSP环境中进行PDF打印,并涉及复杂的模板设计。PDF(Portable Document Format)是一种通用的文件格式,常用于生成保持原始文档格式不变的静态文档,适用于打印和共享。 首先,我们需要...

    活动随记一次“出色”的朗诵会.pdf

    如果文件内容确实如描述中所示,全为“活动随记一次‘出色’的朗诵会.pdf”和一些不明确的符号,那么我将无法从空白或无关的信息中提取知识点。请提供实际的文字内容,以便我进行分析并创作出丰富的内容。

    随记小时光设计书1

    在"随记小时光设计书1"中,我们主要讨论的是用户信息和手账信息的设计,特别是在数据库方面的应用。这个设计涉及到用户信息的多个关键组成部分,包括昵称、用户名、密码、邮箱、手机号以及权限和加密key的管理。下面...

    重点小学生寒假记随记大全.doc

    重点小学生寒假记随记大全.doc

    公司法务实习日记随记三篇.pdf

    公司法务实习日记随记三篇.pdf

Global site tag (gtag.js) - Google Analytics