3.2.3 以CSS选择器访问DOM元素
每个CSS
选择器可以对应一个或多个HTML
元素,如果以该CSS
选择器作为参数,$(selector)
将可以获取由该选择器对应的一个或多个HTML
元素包装成的jQuery
对象。
jQuery选择符
与前面的CSS
选择器类似的是,$()
可支持如下几种参数形式。
id选择符
选择符 |
描述 |
#id |
返回由指定id对应的HTML 元素包装成的jQuery 对象。类似于CSS 中id 选择器的功能。 |
标签名选择符
选择符 |
描述 |
tagName |
返回由所有tagName 标签对应的所有HTML 元素包装成的jQuery 对象数组。类似于CSS 中元素选择器的功能。 |
标签名属性名选择符
选择符 |
描述 |
tagName[attribute] |
返回由tagName 标签生成且由包含attribute 属性的所有HTML 元素包装成的jQuery 对象数组。以下几个都类似于CSS 中属性选择器的功能。 |
标签名属性名属性值选择符
选择符 |
描述 |
tagName[attribute=value] |
返回由tagName 标签生成且由attribute 属性**等于value **的所有HTML 元素包装成的jQuery 对象。 |
tagName[attribute!=value] |
返回由tagName 标签生成且由attribute 属性**不等于value **的所有HTML 元素包装成的jQuery 对象。 |
tagName[attribute^=value] |
返回由tagName 标签生成且由attribute 属性值以value 开头的所有HTML 元素包装成的jQuery 对象。 |
tagName[attribute$=value] |
返回由tagName 标签生成且由attribute 属性值以value 结尾的所有HTML 元素包装成的jQuery 对象。 |
tagName[attribute*=value] |
返回由tagName 标签生成且由attribute 属性值包含value 的所有HTML 元素包装成的jQuery 对象。 |
tagName[attributeFilter1][attributeFilter2]... |
返回由tagName 标签生成且由具有attributeFilter1 、attributeFilter2 等任意一个属性特征的所有HTML 元素包装成的jQuery 对象。其中,attributeFilter1 、attributeFilter2 支持前面任意一个有效的属性定义。 |
类选择符
选择符 |
描述 |
.className |
返回由所有class 属性为className 的所有HTML 元素包装成的jQuery 对象。类似于CSS 中class 选择器的功能。 |
后代选择符
选择符 |
描述 |
outerSelector空格innerSelector |
返回由outerSelector 选择器之内的所有innerSelector (不管处于多少层之内)对应的HTML 元素包装成的jQuery 对象。类似于CSS 中的包含选择器 的功能。 |
子代选择符
子代选择符 |
描述 |
parentSelector>childSelector |
返回由直接位于parentSelector 选择器之内第一层childSelector 对应的HTML 元素包装成的jQuery 对象。类似于CSS 中的子选择器的功能。 |
兄弟选择符
兄弟选择符 |
描述 |
prevSelector+nextSelector |
返回由紧跟在prevSelector 之后的第一个nextSelector 对应的HTML 元素包装成的jQuery 对象。类似于CSS 中兄弟选择器的功能。 |
prevSelector~siblingsSelector |
返回由位于prevSelector 之后的所有siblingsSelector 对应的HTML 元素包装成的jQuery 对象。类似于CSS 中兄弟选择器的功能。 |
组合选择符
选择符 |
描述 |
selector1,selector2,selector3,...,selectorN |
同时指定多个选择器,返回由匹配任何一个选择器的所有HTML 元素包装成的jQuery 对象。类似于CSS 中选择器组合的功能。 |
星号选择符
星号选择符 |
描述 |
* |
返回由所有HTML 元素包装成的jQuery 对象。相当于CSS 中通配符选择器的功能,这个不常用。 |
标题选择符
选择符 |
描述 |
:header |
返回由h1、h2、h3之类的标题元素包装成的jQuery 对象。 |
根选择符
选择符 |
描述 |
:root |
返回该文档的根元素。HTML 的根元素总是<html> 元素,因此$(":root") 总是返回HTML 文档的根元素。 |
例如如下代码用于将整个HTML 文档背景设为蓝色: |
|
1
| $(": root"). css("background-color","blue");
|
上面的很多选择器都可同时匹配多个HTML
元素,而使用上面这些选择器作为$()
函数的参数时
$()
函数都将简单地返回jQuery
对象。这是因为jQuery
对象不只可以包装单个的DOM
元素,也可包装多个DOM
元素,此时的jQuery
对象有点类似于数组。如果程序直接操作包装多个DOM
元素的jQuery
对象,那么这些DOM
元素都会随之改变。
程序示例
以下程序示范了上面几种选择器的用法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| <!DOCTYPE html> <html> <head> <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title> 使用jQuery()函数 </title> <style type="text/css"> .test { font-size: 20pt; } </style> </head> <body> <ul> <li id="java">测试ID选择符符</li> <li id="javaee" class="test">测试类选择符</li> <li id="ajax">测试子代选择符</li> <li id="xml">测试组合选择符1</li> <li id="ejb">经典Java EE企业应用实战</li> <li> <span id="android">测试组合选择符2</span> </li> </ul> <script type="text/javascript" src="../jquery-3.1.1.js"> </script> <script type="text/javascript"> $("#java").append("<b> 是id为java的元素</b>");
$("li[id]").css("background-color", "#bbbbff");
$(".test").css("border", "3px dotted black");
$("#xml,#android").append("<b>是id为xml、android其中之一的元素</b>");
$("ul #android").append("<br /><b>位于ul之内、id为android的子元素</b>");
$("ul>#ajax").append("<b>位于ul之内、id为ajax的子元素</b>") .css("border", "2px solid black");
$("#ajax~li").css("background-color", "#ff5555"); </script> </body> </html>
|
该程序示范了$()
所支持的几种选择器的用法。在浏览器中浏览该页面,将可看到如图3.4所示效果。
上面介绍了$()
函数的基本用法。可以看出:
$()
函数支持许多选择器都会一次返回多个HTML
元素对应的jQuery
对象,jQuery
还支持在原有的选择器上增加额外的限定。