jQuery 關(guān)于偽類選擇符的使用說(shuō)明
jQuery選擇器的強(qiáng)大不僅在于選擇器支持基本的css選擇符,還支持很多CSS的偽類選擇符,甚至可以自定義選擇符,下面讓我們來(lái)看看一些偽類選擇符
:nth-child的用法
nth-child是一個(gè)css3偽類選擇符,在jQuery中被實(shí)現(xiàn)了,在Jquery API中對(duì)nth-child的定義是:”匹配其父元素下的第N個(gè)子或奇偶元素“。讀著感覺(jué)有點(diǎn)繞口,下面讓我們通過(guò)例子來(lái)說(shuō)明:
<div>
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
<li>five</li>
<li>six</li>
<li>seven</li>
<li>eight</li>
<li>nine</li>
</ul>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>
</div>
<script type="text/javascript">
$("li:nth-child(2)").css("background-color", "blue");
</script>
運(yùn)行效果如下:
API定義中的匹配其父輩指的是所選元素的父元素不同,則分開(kāi)選擇。在上面例子中雖然一共選擇18個(gè)<li>但是這18<li>分屬于2個(gè)不同的<ul>,所以會(huì)選擇兩個(gè).如果將其放入同一個(gè)<ul>中,如果放入同一個(gè)<ul>執(zhí)行上面代碼,則:

理解了上面匹配父輩元素,下面來(lái)說(shuō)說(shuō)這個(gè)選擇符參數(shù)的用法.
- 向上面那樣直接給出選擇的位置,但是這里注意,這個(gè)位置是以1為開(kāi)始的,而不是0 n個(gè)倍數(shù)選擇法,比如可以使3n+1,-3n+1,4n,等,匹配所有頁(yè)面上存在的n的倍數(shù)
例子:
<div>
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
<li>five</li>
<li>six</li>
<li>seven</li>
<li>eight</li>
<li>nine</li>
</ul>
</div>
<script type="text/javascript">
$("li:nth-child(3n-1)").css("background-color", "blue");
</script>
效果:

可見(jiàn)相對(duì)應(yīng)的元素都被匹配
3.還有一種用法是我們熟知的odd和even,就是奇數(shù)和偶數(shù),如下:
<script type="text/javascript">
$("li:nth-child(odd)").css("background-color", "blue");
</script>
效果:

:first-child&last-child
從上面的nth-child可以看到”匹配父類下的“含義,first-child和last-child也同樣是這樣.它們可以看做nth-child的封裝:
first-child和nth-child(1)等價(jià),這里就不多說(shuō)了.
而first-child目前我還找不到等價(jià)的nth-child表達(dá)式,匹配父類下的最后一個(gè)子元素:
效果:

:input并不只是匹配input
個(gè)選擇符我想大家都比較熟悉,但是要注意,input偽類選擇符不只是匹配<input>標(biāo)簽,還會(huì)匹配<select>和<textarea>:
第一個(gè):<input type="input" />
第二個(gè):<select id="select">
</select>
第三個(gè):<textarea></textarea>
<script type="text/javascript">
alert($(":input").length);//alert 3
</script>
可以看到,不光<input>被選擇,<select>和<textarea>也被選擇了
偽類選擇符可以嵌套
通常情況下,我們可以通過(guò)嵌套偽類選擇符來(lái)達(dá)到我們需要的效果,偽類選擇符,如下:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
<script type="text/javascript">
$("li:not(:first):not(:last)").css("background-color", "blue");
</script>
效果:

自定義偽類選擇符
jquery還提供給我們擴(kuò)展原有選擇符的方式,可以讓我們根據(jù)自己的需要自定義選擇符,下面通過(guò)一個(gè)有實(shí)際意義的例子看如何做到:
在我們使用jquery的serialize方法將當(dāng)前表單中的元素提交到服務(wù)器時(shí),總是會(huì)選上asp.net的ViewState(<input type=”hidden” />)這無(wú)疑浪費(fèi)了好多資源,我們通過(guò)一個(gè)擴(kuò)展的偽類選擇符看如何不選擇它:
<form name="form1" method="post" action="default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGRWxo4mg/noF3+7k/L7nyw13HVnLQ==" />
</div>
<script type="text/javascript">
$.expr[":"].noViewState = function(element) {
return !$(element).attr("id") === "_VIEWSTATE";
}
alert($(":input:noViewState").size());//alert 0 ViewState has not been choosen
</script>
</form>
通過(guò)$.expr的方式對(duì)偽類選擇符進(jìn)行擴(kuò)展,可以看出,上面的選擇符使用:noViewState后,viewState沒(méi)有被選擇.
小結(jié):
jQuery的偽類選擇符是很強(qiáng)大的一項(xiàng)功能,它內(nèi)置了很多種方便我們選擇的選擇符,我們可以嵌套甚至擴(kuò)展這些偽類選擇符.這讓我們的js編程更加愉悅了許多.
相關(guān)文章
jQuery基于事件控制實(shí)現(xiàn)點(diǎn)擊顯示內(nèi)容下拉效果
這篇文章主要介紹了jQuery基于事件控制實(shí)現(xiàn)點(diǎn)擊顯示內(nèi)容下拉效果,涉及jQuery事件響應(yīng)及元素屬性動(dòng)態(tài)操作相關(guān)技巧,需要的朋友可以參考下2017-03-03
jquery ajax 局部無(wú)刷新更新數(shù)據(jù)的實(shí)現(xiàn)案例
這篇文章主要對(duì)jquery ajax 局部無(wú)刷新更新數(shù)據(jù)的實(shí)現(xiàn)案例進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02
jQuery Validate 數(shù)組 全部驗(yàn)證問(wèn)題
這篇文章主要介紹了jquery validate 數(shù)組 全部驗(yàn)證問(wèn)題及解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-01-01
探討JQUERY JSON的反序列化類 using問(wèn)題的解決方法
本篇文章是對(duì)JQUERY JSON的反序列化類 using問(wèn)題的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12
淺談jQuery this和$(this)的區(qū)別及獲取$(this)子元素對(duì)象的方法
下面小編就為大家?guī)?lái)一篇淺談jQuery this和$(this)的區(qū)別及獲取$(this)子元素對(duì)象的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
jQuery實(shí)現(xiàn)的導(dǎo)航條點(diǎn)擊后高亮顯示功能示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)的導(dǎo)航條點(diǎn)擊后高亮顯示功能,涉及jQuery事件響應(yīng)及頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-03-03

