国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery選擇器_動力節(jié)點Java學(xué)院整理

2019-11-19 16:10:08
字體:
供稿:網(wǎng)友

選擇器是jQuery的核心。一個選擇器寫出來類似$('#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>}

這些代碼實在太繁瑣了,并且,在層級關(guān)系中,例如,查找<table class="green">里面的所有<tr>,一層循環(huán)實際上是錯的,因為<table>的標(biāo)準(zhǔn)寫法是:

<table>  <tbody>    <tr>...</tr>    <tr>...</tr>  </tbody></table>

很多時候,需要遞歸查找所有子節(jié)點。

jQuery的選擇器就是幫助我們快速定位到一個或多個DOM節(jié)點。

按ID查找

如果某個DOM節(jié)點有id屬性,利用jQuery查找如下:

// 查找<div id="abc">:var div = $('#abc');

注意,#abc以#開頭。返回的對象是jQuery對象。

什么是jQuery對象?jQuery對象類似數(shù)組,它的每個元素都是一個引用了DOM節(jié)點的對象。

以上面的查找為例,如果id為abc的<div>存在,返回的jQuery對象如下:

[<div id="abc">...</div>]

如果id為abc的<div>不存在,返回的jQuery對象如下:

[]

總之jQuery的選擇器不會返回undefined或者null,這樣的好處是你不必在下一行判斷if (div === undefined)。

jQuery對象和DOM對象之間可以互相轉(zhuǎn)化:

var div = $('#abc'); // jQuery對象var divDom = div.get(0); // 假設(shè)存在div,獲取第1個DOM元素var another = $(divDom); // 重新把DOM包裝為jQuery對象

通常情況下你不需要獲取DOM對象,直接使用jQuery對象更加方便。如果你拿到了一個DOM對象,那可以簡單地調(diào)用$(aDomObject)把它變成jQuery對象,這樣就可以方便地使用jQuery的API了。

按tag查找

按tag查找只需要寫上tag名稱就可以了:

var ps = $('p'); // 返回所有<p>節(jié)點ps.length; // 數(shù)一數(shù)頁面有多少個<p>節(jié)點

按class查找

按class查找注意在class名稱前加一個.:

var a = $('.red'); // 所有節(jié)點包含`class="red"`都將返回// 例如:// <div class="red">...</div>// <p class="green red">...</p>

通常很多節(jié)點有多個class,我們可以查找同時包含red和green的節(jié)點:

var a = $('.red.green'); // 注意沒有空格!// 符合條件的節(jié)點:// <div class="red green">...</div>// <div class="blue green red">...</div>

按屬性查找

一個DOM節(jié)點除了id和class外還可以有很多屬性,很多時候按屬性查找會非常方便,比如在一個表單中按屬性來查找:

var email = $('[name=email]'); // 找出<??? name="email">var passwordInput = $('[type=password]'); // 找出<??? type="password">var a = $('[items="A B"]'); // 找出<??? items="A B">

當(dāng)屬性的值包含空格等特殊字符時,需要用雙引號括起來。

按屬性查找還可以使用前綴查找或者后綴查找:

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"這個方法尤其適合通過class屬性查找,且不受class包含多個名稱的影響:var icons = $('[class^="icon-"]'); // 找出所有class包含至少一個以`icon-`開頭的DOM// 例如: class="icon-clock", class="abc icon-home"

組合查找

組合查找就是把上述簡單選擇器組合起來使用。如果我們查找$('[name=email]'),很可能把表單外的<div name="email">也找出來,但我們只希望查找<input>,就可以這么寫:

var emailInput = $('input[name=email]'); // 不會找出<div name="email">

同樣的,根據(jù)tag和class來組合查找也很常見:

var tr = $('tr.red'); // 找出<tr class="red ...">...</tr>

多項選擇器

多項選擇器就是把多個選擇器用,組合起來一塊選:

$('p,div'); // 把<p>和<div>都選出來$('p.red,p.green'); // 把<p class="red">和<p class="green">都選出來

要注意的是,選出來的元素是按照它們在HTML中出現(xiàn)的順序排列的,而且不會有重復(fù)元素。例如,<p class="red green">不會被上面的$('p.red,p.green')選擇兩次。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 循化| 丽水市| 建湖县| 手游| 曲靖市| 丽水市| 盐津县| 阿拉善右旗| 那坡县| 涿鹿县| 海门市| 海丰县| 新龙县| 澄江县| 壤塘县| 蓝山县| 宁乡县| 九江县| 汶上县| 贵州省| 贵阳市| 莲花县| 庆阳市| 东安县| 恭城| 巫溪县| 原平市| 巴中市| 七台河市| 甘肃省| 崇明县| 应城市| 当雄县| 富蕴县| 鹤岗市| 舟山市| 蒙城县| 浦城县| 宁安市| 闻喜县| 新竹县|