jquery获取css中的选择器(实例讲解)
开始写之前先复习一下元素和节点的区别:
元素是w3c文档对象模型(dom)当中使用最广泛的节点之一。
元素拥有关联的“属性”。
xmlelement类拥有许多方法来访问它的“属性”(getattribute, setattribute, removeattribute, getattributenode, 等等)。
你也可以使用“attributes”属性来返回一个支持“名字”或者“序号”访问的“xml属性集”。
那么,从xmlelement类的解释来看,我们很容易就知道xmlnode和xmlelement类的区别了:
xmlelement类是只拥有“属性”的一个节点,而xmlnode则是不仅拥有“属性”,还拥有“子节点”的一个节点。
所以,我们在使用它们的时候,如果你需要获取或者设置节点中的innertext或者innerxml,那么你就需要用xmlnode;而如果你需要获取或者设置节点本身的属性(参数)的时候,你就需要用xmlelement,当然,你也可以用(xmlelement)对xmlnode进行转换得到。
下面开始进入正题
在javascript中,除了对id的选择器比较好取一些,其他的都不是很好取,jquery在这一块要比它优秀多了,提供了很多的获取方法主要包括
1、基础选择器(主要包括标签选择器,id选择器,类选择器,通用选择器,组选择器)
$("#pid") 获取id为pid的元素
$("a") 获取所有<a>元素
$(".bgred") 获取所用css类为bgred的元素
$("*")获取页面所有元素
$("#pid, a, .bgred")获取三个满足条件的选择器
2、层级选择器(主要包括子元素选择器、后代元素选择器、紧邻同辈元素选择器、相邻同辈元素选择器)
2.1 子元素选择器> ===============选择儿子元素
. 代码如下:
<ul class="topnav">
<li>item 1</li>
<li>item 2
<ul><li>nested item 1</li><li>nested item 2</li><li>nested item 3</li></ul>
</li>
<li>item 3</li>
</ul>
<script> $("ul.topnav > li").css("border", "3px double red");</script>
这是官方的代码,可以参考以下其用法
2.2 后代选择器 直接用空格表示 不仅包括儿子还包括孙子........===============选择后代元素
. 代码如下:
<form>
<p>form is surrounded by the green outline</p>
<label>child:</label>
<input name="name" />
<fieldset>
<label>grandchild:</label>
<input name="newsletter" />
</fieldset>
</form>
sibling to form: <input name="none" />
<script> $("form input").css("border", "2px dotted blue");</script>
2.3 紧邻同辈元素选择器 所有符合条件的都可以会被选择 主要是选择一个元素之后的平行元素 ===============选择指定元素的下一个平辈元素
. 代码如下:
<form>
<label>name:</label>
<input name="name" />
<fieldset>
<label>newsletter:</label>
<input name="newsletter" />
</fieldset>
</form>
<input name="none" />
<script>$("label + input").css("color", "blue").val("labeled!")</script>
2.4 相邻同辈元素选择器 ===============选择指定元素的所有指定的平辈元素,可以隔几个不是指定的元素
. 代码如下:
<p>p (doesn't match since before #prev)</p>
<span id="prev">span#prev</span>
<p>p sibling</p>
<p>p sibling <p id="small">p niece</p></p>
<span>span sibling (not p)</span>
<p>p sibling</p>
<script>$("#prev ~ p").css("border", "3px groove blue");</script>
3、表单选择器主要选择表单、用的时间要注意$(":input")注意引号里面的冒号也可以选择类型如$(":button")不过多介绍
4、基本过滤器主要包括
名称 | 说明 | 举例 |
:first | 匹配找到的第一个元素 | 查找表格的第一行:$("tr:first") |
:last | 匹配找到的最后一个元素 | 查找表格的最后一行:$("tr:last") |
:not(selector) | 去除所有与给定选择器匹配的元素 | 查找所有未选中的 input 元素: $("input:not(:checked)") |
:even | 匹配所有索引值为偶数的元素,从 0 开始计数 | 查找表格的1、3、5...行:$("tr:even") |
:odd | 匹配所有索引值为奇数的元素,从 0 开始计数 | 查找表格的2、4、6行:$("tr:odd") |
:eq(index) | 匹配一个给定索引值的元素 注:index从 0 开始计数 |
查找第二行:$("tr:eq(1)") |
:gt(index) | 匹配所有大于给定索引值的元素 注:index从 0 开始计数 |
查找第二第三行,即索引值是1和2,也就是比0大:$("tr:gt(0)") |
:lt(index) | 选择结果集中索引小于 n 的 elements 注:index从 0 开始计数 |
查找第一第二行,即索引值是0和1,也就是比2小:$("tr:lt(2)") |
:header | 选择所有h1,h2,p一类的header标签. | 给页面内所有标题加上背景色: $(":header").css("background", "#eee"); |
:animated | 匹配所有正在执行动画效果的元素 | 只有对不在执行动画效果的元素执行一个动画特效:
$("#run").click(function(){ |
5、内容过滤器(主节点的子节点为文本节点)
名称 | 说明 | 举例 |
:contains(text) | 匹配包含给定文本的元素 | 查找所有包含 "john" 的 p 元素:$("p:contains('john')") |
:empty | 匹配所有不包含子元素或者文本的空元素 | 查找所有不包含子元素或者文本的空元素:$("td:empty") |
:has(selector) | 匹配含有选择器所匹配的元素的元素 | 给所有包含 p 元素的 p 元素添加一个 text 类: $("p:has(p)").addclass("test"); |
:parent | 匹配含有子元素或者文本的元素 | 查找所有含有子元素或者文本的 td 元素:$("td:parent") |
6、可见性过滤器 visibility filters
:hidden
:visible
7、属性过滤器 attribute filters
名称 | 说明 | 举例 |
[attribute] | 匹配包含给定属性的元素 | 查找所有含有 id 属性的 p 元素: $("p[id]") |
[attribute=value] | 匹配给定的属性是某个特定值的元素 | 查找所有 name 属性是 newsletter 的 input 元素: $("input[name='newsletter']").attr("checked", true); |
[attribute!=value] | 匹配给定的属性是不包含某个特定值的元素 | 查找所有 name 属性不是 newsletter 的 input 元素: $("input[name!='newsletter']").attr("checked", true); |
[attribute^=value] | 匹配给定的属性是以某些值开始的元素 | $("input[name^='news']") |
[attribute$=value] | 匹配给定的属性是以某些值结尾的元素 | 查找所有 name 以 'letter' 结尾的 input 元素: $("input[name$='letter']") |
[attribute*=value] |
匹配给定的属性是以包含某些值的元素 |
查找所有 name 包含 'man' 的 input 元素: |
[attributefilter1][attributefilter2][attributefiltern] | 复合属性选择器,需要同时满足多个条件时使用。 | 找到所有含有 id 属性,并且它的 name 属性是以 man 结尾的: $("input[id][name$='man']") |
8.子元素过滤器 child filters
名称 | 说明 | 举例 |
:nth-child(index/even/odd/equation) |
匹配其父元素下的第n个子或奇偶元素 ':eq(index)' 只匹配一个元素,而这个将为每一个父元素匹配子元素。:nth-child从1开始的,而:eq()是从0算起的! 可以使用: |
在每个 ul 查找第 2 个li: $("ul li:nth-child(2)") |
:first-child |
匹配第一个子元素 ':first' 只匹配一个元素,而此选择符将为每个父元素匹配一个子元素 |
在每个 ul 中查找第一个 li: $("ul li:first-child") |
:last-child |
匹配最后一个子元素 ':last'只匹配一个元素,而此选择符将为每个父元素匹配一个子元素 |
在每个 ul 中查找最后一个 li: $("ul li:last-child") |
:only-child |
如果某个元素是父元素中唯一的子元素,那将会被匹配 如果父元素中含有其他元素,那将不会被匹配。 |
在 ul 中查找是唯一子元素的 li: $("ul li:only-child") |
推荐阅读
-
jquery获取css中的选择器(实例讲解)
-
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
-
jQuery与Ajax的应用(jQuery中的Ajax)实例讲解
-
实例讲解CSS3中Transform的perspective属性的用法
-
JQuery 获取Dom元素的实例讲解
-
实例讲解CSS3中的border-radius属性
-
jQuery:delegate中select()不起作用的解决方法(实例讲解)
-
mui开发中获取单选按钮、复选框的值(实例讲解)
-
模拟jQuery中的ready方法及实现按需加载css,js实例代码
-
jQuery中的全局函数getJSON()实例讲解