【四十一】jQuery選擇器-層級選擇器

除了基本的選擇器外,jQuery的層級選擇器更加靈活,也更強大。
因為DOM的結(jié)構(gòu)就是層級結(jié)構(gòu),所以我們經(jīng)常要根據(jù)層級關(guān)系進行選擇。

層級選擇器(Descendant Selector)

如果兩個DOM元素具有層級關(guān)系,就可以用$('ancestor descendant')來選擇,層級之間用空格隔開。例如:

<!-- HTML結(jié)構(gòu) -->
<div class="testing">
    <ul class="lang">
        <li class="lang-javascript">JavaScript</li>
        <li class="lang-python">Python</li>
        <li class="lang-lua">Lua</li>
    </ul>
</div>

要選出JavaScript,可以用層級選擇器:

$('ul.lang li.lang-javascript');  // [<li class="lang-javascript">JavaScript</li>]
$('div.testing li.lang-JavaScript');  // [<li class="lang-JavaScript">JavaScript</li>]

因為<div><ul>都是<li>的祖先節(jié)點,所以上面兩種方式都可以選出相應(yīng)的<li>節(jié)點。
要選擇所有的<li>節(jié)點,用:

$('ul.lang li');

這種層級選擇器相比單個的選擇器好處在于,它縮小了選擇范圍,因為首先要定位父節(jié)點,才能選擇相應(yīng)的子節(jié)點,免了頁面其他不相關(guān)的元素。
例如:

$('form[name=upload] input');

就把選擇范圍限定在name屬性為upload的表單里。如果頁面有很多表單,其他表單的<input>不會被選擇。
多層選擇也是允許的:

$('form.test p input');  // 在form表單選擇被<p>包含的<input>

子選擇器(Child Selector)

子選擇器$('parent>child')類似層級選擇器,但是限定了層級關(guān)系必須是父子關(guān)系,就是<child>節(jié)點必須是<parent>節(jié)點的直屬子節(jié)點。還是以上面的例子:

$('ul.lang>li.lang-javascript');  // 可以選出[<li class="lang-javascript">JavaScript</li>]
$('div.testing>li.lang-JavaScript');  // [], 無法選出,因為<div>和<li>不構(gòu)成父子關(guān)系

過濾器(Filter)

過濾器一般不單獨使用,它通常附加在選擇器上,幫助我們更精確地定位元素。觀察過濾器的效果:

$('ul.lang li');  // 選出JavaScript、Python和Lua 3個節(jié)點

$('ul.lang li:first-child');  // 僅選出JavaScript
$('ul.lang li:last-child');  // 僅選出Lua
$('ul.lang li:nth-child(2)');  // 選出第N個元素,N從1開始
$('ul.lang li:nth-child(even)');  // 選出序號為偶數(shù)的元素
$('ul.lang li:nth-child(odd)');  // 選出序號為奇數(shù)的元素

<p></p>
</br>

表單相關(guān)

針對表單元素,jQuery還有一組特殊的選擇器:

  • :input:可以選擇<input>,<textarea>,<select>和<button>;
  • :file:可以選擇<input type="file">,和input[type=file]一樣;
  • :checkbox:可以選擇復(fù)選框,和input[type=checkbox]一樣;
  • :radio:可以選擇單選框,和input[type=radio]一樣;
  • :focus:可以選擇當前輸入焦點的元素,例如把光標放到一個<input>上,用$('input:focus')就可以選出;
  • :checked:選擇當前勾上的單選框和復(fù)選框,用這個選擇器可以立刻獲得用戶選擇的項目,如$('input[type=radio]:checked');
  • :enabled:可以選擇可以正常輸入的<input>、<selector>等,也就是沒有灰掉的輸入;
  • :disabled:和:enabled正好相反,選擇那些不能輸入的。

此外,jQuery還有很多有用的選擇器,例如,選出可見的或隱藏的元素:

$('div:visible');  // 所有可見的div
$('div:hidden');  // 所有隱藏的div
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 除了基本的選擇器外,jQuery選擇器更加靈活和強大因為DOM的結(jié)構(gòu)就是層級結(jié)構(gòu),所以我們經(jīng)常要根據(jù)層級關(guān)系進行選...
    _我和你一樣閱讀 636評論 0 0
  • 環(huán)境搭建 進入官方網(wǎng)站獲取最新的版本 http://jquery.com/download/ ,這里需要注意 j...
    阿r阿r閱讀 872評論 0 7
  • 選擇器選擇器是jQuery的核心。 事件 動畫 擴展
    wyude閱讀 539評論 0 1
  • 今天是新一輪冰山打卡練習的最后一天,看著初嘗“甜頭”的爸爸媽媽們一個個積極踴躍地打卡,內(nèi)心有著說不出的感動。 正如...
    智慧愛家長學院閱讀 1,040評論 0 0
  • 壯男救群狗,大鬧酒店奔自由 1 晚上,燈火點亮了整個城市,人群潮水一樣從白天的工作地涌入各個娛樂和餐飲場所,開始了...
    西毒電影閱讀 275評論 0 0

友情鏈接更多精彩內(nèi)容