jQuery選擇器_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
選擇器是jQuery的核心。一個(gè)選擇器寫出來類似$('#dom-id')。
為什么jQuery要發(fā)明選擇器?回顧一下DOM操作中我們經(jīng)常使用的代碼:
// 按ID查找:
var a = document.getElementById('dom-id');
// 按tag查找:
var divs = document.getElementsByTagNames('div');
// 查找<p class="red">:
var ps = document.getElementsByTagNames('p');
// 過濾出class="red":
// TODO:
// 查找<table class="green">里面的所有<tr>:
var table = ...
for (var i=0; i<table.children; i++) {
// TODO: 過濾出<tr>
}
這些代碼實(shí)在太繁瑣了,并且,在層級(jí)關(guān)系中,例如,查找<table class="green">里面的所有<tr>,一層循環(huán)實(shí)際上是錯(cuò)的,因?yàn)?lt;table>的標(biāo)準(zhǔn)寫法是:
<table>
<tbody>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
很多時(shí)候,需要遞歸查找所有子節(jié)點(diǎn)。
jQuery的選擇器就是幫助我們快速定位到一個(gè)或多個(gè)DOM節(jié)點(diǎn)。
按ID查找
如果某個(gè)DOM節(jié)點(diǎn)有id屬性,利用jQuery查找如下:
// 查找<div id="abc">:
var div = $('#abc');
注意,#abc以#開頭。返回的對(duì)象是jQuery對(duì)象。
什么是jQuery對(duì)象?jQuery對(duì)象類似數(shù)組,它的每個(gè)元素都是一個(gè)引用了DOM節(jié)點(diǎn)的對(duì)象。
以上面的查找為例,如果id為abc的<div>存在,返回的jQuery對(duì)象如下:
[<div id="abc">...</div>]
如果id為abc的<div>不存在,返回的jQuery對(duì)象如下:
[]
總之jQuery的選擇器不會(huì)返回undefined或者null,這樣的好處是你不必在下一行判斷if (div === undefined)。
jQuery對(duì)象和DOM對(duì)象之間可以互相轉(zhuǎn)化:
var div = $('#abc'); // jQuery對(duì)象
var divDom = div.get(0); // 假設(shè)存在div,獲取第1個(gè)DOM元素
var another = $(divDom); // 重新把DOM包裝為jQuery對(duì)象
通常情況下你不需要獲取DOM對(duì)象,直接使用jQuery對(duì)象更加方便。如果你拿到了一個(gè)DOM對(duì)象,那可以簡單地調(diào)用$(aDomObject)把它變成jQuery對(duì)象,這樣就可以方便地使用jQuery的API了。
按tag查找
按tag查找只需要寫上tag名稱就可以了:
var ps = $('p'); // 返回所有<p>節(jié)點(diǎn)
ps.length; // 數(shù)一數(shù)頁面有多少個(gè)<p>節(jié)點(diǎn)
按class查找
按class查找注意在class名稱前加一個(gè).:
var a = $('.red'); // 所有節(jié)點(diǎn)包含`class="red"`都將返回
// 例如:
// <div class="red">...</div>
// <p class="green red">...</p>
通常很多節(jié)點(diǎn)有多個(gè)class,我們可以查找同時(shí)包含red和green的節(jié)點(diǎn):
var a = $('.red.green'); // 注意沒有空格!
// 符合條件的節(jié)點(diǎn):
// <div class="red green">...</div>
// <div class="blue green red">...</div>
按屬性查找
一個(gè)DOM節(jié)點(diǎn)除了id和class外還可以有很多屬性,很多時(shí)候按屬性查找會(huì)非常方便,比如在一個(gè)表單中按屬性來查找:
var email = $('[name=email]'); // 找出<??? name="email">
var passwordInput = $('[type=password]'); // 找出<??? type="password">
var a = $('[items="A B"]'); // 找出<??? items="A B">
當(dāng)屬性的值包含空格等特殊字符時(shí),需要用雙引號(hào)括起來。
按屬性查找還可以使用前綴查找或者后綴查找:
var icons = $('[name^=icon]'); // 找出所有name屬性值以icon開頭的DOM
// 例如: name="icon-1", name="icon-2"
var names = $('[name$=with]'); // 找出所有name屬性值以with結(jié)尾的DOM
// 例如: name="startswith", name="endswith"
這個(gè)方法尤其適合通過class屬性查找,且不受class包含多個(gè)名稱的影響:
var icons = $('[class^="icon-"]'); // 找出所有class包含至少一個(gè)以`icon-`開頭的DOM
// 例如: class="icon-clock", class="abc icon-home"
組合查找
組合查找就是把上述簡單選擇器組合起來使用。如果我們查找$('[name=email]'),很可能把表單外的<div name="email">也找出來,但我們只希望查找<input>,就可以這么寫:
var emailInput = $('input[name=email]'); // 不會(huì)找出<div name="email">
同樣的,根據(jù)tag和class來組合查找也很常見:
var tr = $('tr.red'); // 找出<tr class="red ...">...</tr>
多項(xiàng)選擇器
多項(xiàng)選擇器就是把多個(gè)選擇器用,組合起來一塊選:
$('p,div'); // 把<p>和<div>都選出來
$('p.red,p.green'); // 把<p class="red">和<p class="green">都選出來
要注意的是,選出來的元素是按照它們?cè)贖TML中出現(xiàn)的順序排列的,而且不會(huì)有重復(fù)元素。例如,<p class="red green">不會(huì)被上面的$('p.red,p.green')選擇兩次。
相關(guān)文章
JQuery fileupload插件實(shí)現(xiàn)文件上傳功能
這篇文章主要介紹了JQuery fileupload插件實(shí)現(xiàn)文件上傳功能的相關(guān)資料,需要的朋友可以參考下2016-03-03
EasyUi datagrid 實(shí)現(xiàn)表格分頁
這篇文章主要介紹了EasyUi datagrid 實(shí)現(xiàn)表格分頁的方法和示例分享,需要的朋友可以參考下2015-02-02
jquery用get實(shí)現(xiàn)ajax在ie里面刷新不進(jìn)入后臺(tái)解決方法
jquery用get實(shí)現(xiàn)ajax在ie里面刷新不進(jìn)入后臺(tái)的情況想必大家都有遇到過吧,下面與大家分享下具體的解決方法,希望對(duì)大家解決問題有所幫助2013-08-08
jQuery實(shí)現(xiàn)點(diǎn)擊彈出背景變暗遮罩效果實(shí)例代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)點(diǎn)擊彈出背景變暗遮罩效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
jQuery中使用animate自定義動(dòng)畫的方法
這篇文章主要介紹了jQuery中使用animate自定義動(dòng)畫的方法的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05
jQuery on()方法示例及jquery on()方法的優(yōu)點(diǎn)
使用jquery on()方法綁定事件是官方推薦的一種方法,接下來跟著小編來學(xué)習(xí)jquery on()方法,小伙伴快來一起學(xué)習(xí)吧2015-08-08
jQuery基于擴(kuò)展簡單實(shí)現(xiàn)倒計(jì)時(shí)功能的方法
這篇文章主要介紹了jQuery基于擴(kuò)展簡單實(shí)現(xiàn)倒計(jì)時(shí)功能的方法,涉及jQuery擴(kuò)展與回調(diào)函數(shù)的相關(guān)使用技巧,需要的朋友可以參考下2016-05-05

