DOM(Document Object Model,文档对象模型)为文档提供了一种结构化表示方法,通过该方法可以改变文档的内容和展示形式。在实际运用中,DOM更像是桥梁,通过它可以实现跨平台、跨语言的标准访问。
单词Document即文档,当我们创建一个页面并加载到web浏览器时,dom模型则根据该页面的内容创建了一个文档文件;
单词Object即对象,是指具有独立特性的一组数据集合;
单词Model即模型,在页面文档中,通过树状模型展示页面的元素和内容,其展示的方式则是通过节点(node)来实现的。
1、访问元素
在操作中,元素的访问是最频繁、最常用的,主要包括对元素属性、内容、值、CSS的操作。
(1) 元素属性操作
a. 获取元素属性
获取元素属性的语法格式如:attr(name),其中,参数name表示属性的名称。
b. 设置元素属性
设置元素属性的语法格式如:attr(name,value),其中,参数name表示属性的名称,value表示属性的值 。
如果要设置多个属性,其语法格式如:attr({name0 : value0,name1 : value1})。
attr()方法还可以绑定一个function函数,通过该函数返回的值作为元素的属性值,其语法格式如:attr(key,function(index)),其中,参数index为当前元素的索引号,整个函数返回一个字符串作为元素的属性值。
c. 删除元素属性
使用removeAttr()方法可以将元素的属性删除,其语法格式为:removeAttr(name),其中,参数name为元素属性的名称。
(2) 元素内容操作
在jquery中,操作元素内容的方法包括html()和text()。前者与javascript中的innerHTML属性类似,即获取或设置元素的HTML内容;后者与javascript中的innerText属性,即获取或设置元素的文本内容;
a. html(),用于获取元素的html内容;
b. html(val),用于设置元素的html内容;
c. text(),用于获取元素的文本内容;
d. text(val),用于设置元素的文本内容;
注意:html()方法仅支持xhtml的文档,不能用于xml文档,而text()则既支持html文档,也支持xml文档。
(3) 获取或设置元素值
在jquery中,如果要获取元素的值,是通过val()方法实现的,其语法如:val(val),其中,如果不带参数val,则是获取某元素的值;反之,则是将参数val的赋给某元素,即设置元素的值。
通过val()方法还可以获取select标记中的多个选项值,其语法如:val().join(",")。
在val(val)方法中,如果有参数,其参数还可以是数组的形式,即val(array),其作用是设置元素被选中。
(4) 元素样式操作
元素样式的操作包含:直接设置样式、增加CSS类别、类别切换、删除类别。
a. 直接设置元素样式值
通过css()方法为某个指定的元素设置样式值,其语法如:css(name, value),其中name为样式名称,value为样式的值。
b. 增加css类别
通过addClass()方法增加元素类别的名称,其语法如:addClass(name),其中,参数name为类别的名称。
也可以增加多个类别的名称,只需要用空格将其隔开即可,其语法如:addClass(name1,name2 ... )。
注意:使用addClass()方法仅是追加样式类别,即它还保存原有的类别。
c. 类别切换
通过toggleClass()方法切换不同的元素类别,其语法如:toggleClass(name),其中参数name为类别名称,其功能是当元素中含有名称为name的css类别时,删除该类别,否则增加一个该名称的css类别。
d. 删除类别
removeClass()方法用于删除类别,其语法如:removeClass([name]),其中,参数name为类别名称,该名称是可选项,当选该名称时,则删除名称是class的类别,有多个类别时用空格隔开。如果不选名称,则删除元素中的所有类别。
2、创建节点元素
函数$()用于动态创建页面元素,其语法格式如下:
$(html)
3、插入节点
按照插入元素的顺序来分:
(1) 内部插入节点方法
append(content):向所选择的元素内部插入内容;
append(fucntion(index,html)):向所选择的元素内部插入function函数所返回的内容;
appendTo(content):把所选择的元素追加到另一个指定的元素集合中;
prepend(content):向每个所选择的元素内部前置内容;
prepend(function(index,html)):向所选择的元素内部前置function函数所返回的内容;
prependTo(content):将所选择的元素前置到别一个指定的元素集合中;
Hello World!
Hello Tomorrow!
(2) 外部插入节点方法
after(content):向所选择的元素外部后面插入内容;
after(function):向所选择的元素外部后面插入function函数所返回的内容;
before(content):向所选择的元素外部前面插入内容;
before(function):向所选择的元素外部前面插入function函数所返回的内容;
insertAfter(content):将所选择的元素插入另一个指定的元素外部后面;
insertBefore(content):将所选择的元素插入另一个指定的元素外部前面;
Hello World!
Hello Tomorrow!
4、复制节点
在jquery中,通过方法clone()实现复制节点,其语法格式为:
clone()
其功能为复制匹配的dom元素并且选中复制成功的元素,该方法仅是复制元素本身,被复制后的新元素不具有任何元素行为。
如果需要在复制时将该元素的全部行为也进行复制,可以通过方法clone(true)实现,其语法格式为:
clone(true)
5、替换节点
(1) replaceWith(content)
将所有选择的元素替换成指定的html和dom元素,其中参数content为被所选择替换的内容。
(2) replaceAll(selector)
将所有选择的元素替换成指定selector的元素,其中参数selector为需要被替换的元素。
(3) replaceWith()与replaceAll()方法都可以实现元素节点的替换,二者最大的区别在于替换字符的顺序,前者是用括号中的字符替换所选择的元素,后者是用字符串替换括号中所选择的元素。同时,一旦完成替换,被替换元素中的全部事件都将消失。
Hello World!
Hello Tomorrow!
6、包裹节点
wrap(html):
html参数为字符串代码,用于生成元素并包裹所选元素;
把所有选择的元素用其他字符串代码包裹起来;
wrap(elem):
elem参数用包装所选元素的dom元素;
把所有选择的元素用其他dom元素包裹起来;
wrap(fn):
fn参数为包裹结构的一个函数;
把所有选择的元素用function函数返回的代码包裹起来;
unwrap():
无参数;
移除所选元素的父元素或包裹标记;
wrapAll(html):
html参数为字符串代码,用于生成元素并包裹所选元素;
把所有选择的元素用单个元素包裹起来;
wrapAll(elem):
elem参数用于包装所选元素的dom元素;
把所有选择的元素用单个dom元素包裹起来;
wrapInner(html):
html参数为字符串代码,用于生成元素并包裹所选元素;
把所有选择的元素的子内容(包括文本节点)用字符串代码包裹起来;
wrapInner(elem):
elem参数用于包裹所选元素的dom元素;
把所有选择的元素的子内容(包括文本节点)用dom元素包裹起来;
wrapInner(fn):
fn参数为包裹结构的一个函数 ;
把所有选择的元素的子内容(包括文本节点)用function函数返回的代码包裹起来;
wrap(html)与wrapInner(html)方法较为常用,前者包裹外部元素,后者包裹元素内部的文本字符。
Hello World!
Hello Tomorrow!
7、遍历元素
在jquery中,可以使用each()方法实现元素的遍历。
其语法格式如下:
each( callback )
参数callback是一个function函数,该函数可以接受一个形参index,此形参为遍历元素的序号(从0开始);如果需要访问元素的属性,可以借助形参index,配合this关键字来实现元素属性的设置或获取。
8、删除元素
jquery提供了两种可以删除元素的方法:
(1) remove()
其语法格式如下:
remove( [expr] )
参数expr为可选项,如果接受参数,则该参数为筛选元素的jquery表达式,通过该表述式获取指定的元素,并进行删除。
(2) empty()
其语法格式如下:
empty(),其功能为清空所选择的页面元素或所有的后代元素。
严格来说,empty()方法并非真正意义上的删除,使用该方法,仅仅可以清空全部的节点或节点所包括的所有后代元素,并非删除节点和元素。