Introduction
jQuery最方便的地方便是各種選擇器。jQuery選擇器完美相容CSS 3選擇器,甚至還有更強大的功能。
$
在jQuery程式中,最常見的就是$符號,那麼$到底是什麼意思呢?
其實,JavaScript的命名規範中,允許以$開頭命名變數,而jQuery則將$作為別名使用,也就是說:
$ = jQuery = window.$ = window.jquery
利用$,你可以簡化大量的程式碼量,減少你的程式碼體積。
jQuery選擇器
雖然JavaScript提供了getElementsByClassName()和getElementsByTagName()的方法,但是並不是所有瀏覽器都能正確的解析,所以不推薦使用原生態JavaScript程式碼。
jQuery對上述問題做了相容性處理,當瀏覽器支援以上方法時,jQuery呼叫該方法,否則,jQuery有自己的實現,確保在不同瀏覽器下都能生效。
下面給出jQuery選擇器的幾個例子:
*
選擇頁面所有的元素
a
選擇頁面所有連結元素(a元素)
selected-id
選擇頁面ID為selected-id的元素,如:
<p id="selected-id">csprojectedu.com</p>
選擇這個標籤的jQuery程式碼為:
$(`#selected-id`);
.selected-class
選擇頁面class為selected-class的元素,如:
<p class="selected-class">csprojectedu.com</p>
選擇這個標籤的jQuery程式碼為:
$(`.selected-class`);
.selected-classA.selected-classB
選擇頁面class為selected-classB且包含在selected-classA中的元素,如:
<div class="selected-classA">
<p class="selected-classB">csprojectedu.com</p>
</div>
選擇這個標籤的jQuery程式碼為:
$(`.selected-classA.selected-classB`);
[selected-property]
選擇頁面屬性為selected-property的元素,如:
<p title="selected-property">csprojectedu.com</p>
選擇這個標籤的jQuery程式碼為:
$(`[selected-property]`);
jQuery選擇器高階用法
在實際程式設計中,只使用基礎選擇器是不夠的,除非你願意給每一個需要的元素建立ID或者Class,下面給出一些技巧:
層級選擇器
可以根據DOM層級來選擇元素,如:
<div class="A">
<div class="B">
<p class="C">csprojectedu.com</p>
</div>
</div>
可以這樣來選擇:
$(`A > B > C`);
屬性選擇器
可以根據部分屬性來選擇元素,如:
<div class="A">
<div class="B">
<a href="http://www.baidu.com">Baidu</a>
</div>
</div>
可以這樣來選擇:
$(`a[href^="http://"]`);
^是匹配開頭的意思,這樣可以找到所有以http開頭的連結元素。
反過來你也可以通過:
$(`a[href^!="http://"]`);
選擇所有非http開頭的連結元素。
事實上還有更多比較靈活的選擇器,如偽選擇器等。更多選擇器使用語法,可以參考W3School的CSS教程,這裡不再贅述。
Summary
本文簡單介紹了jQuery的選擇器,選擇器並不是jQuery 3特有的東西,本系列文章也不會深入去探索。如何精妙簡潔地使用選擇器,不是jQuery的重點,而是CSS的重點。此外,雖然jQuery有許多精妙的選擇器使用方法,但是過於注重程式碼的精簡,實際將會增加程式碼的可讀性和維護難度。