中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jQuery 學習系列筆記(二)(續)

發布時間:2020-07-31 15:13:24 來源:網絡 閱讀:537 作者:我不會抽煙 欄目:web開發

接著上一篇繼續,今天學習對元素包裝集進行精簡、擴展或取子集的多種途徑。

一、管理包裝元素集合

不知道大家對包裝集這個詞有沒有概念,其實就是我們用jQuery選擇器或篩選器最終得到的一個或一組符合條件的集合。

比如:$("li:has(a)"); 它的包裝集就是所有包含<a>元素的<li>元素的集合。所以包裝集就是我們最終想對它操作的一個或一類元素,本篇講的內容全是跟包裝集有關,大家千萬別把思路停留在一些選擇器的語法上,而是在宏觀上稍微提升點,我們做的是對集合的操作。這是為了能讓你今后更好的運用jQuery鏈。


1、確定包裝集的大小

通常包裝集是一個javascript數組,而在javascript中有length屬性去獲得數組的長度,jQuery中也有類似的東西,不過不是屬性,而是方法。

size():返回包裝集里元素的個數。

舉個例子:

$("#myDiv").html("There are " + "$("a").size()" + " on this page.");

相信不用我解釋大家也很明白了,就是匹配頁面上所有的<a>元素,接著調用.size()方法,返回匹配的個數。

2、從包裝集獲取元素

包裝集既然是一個數組,那么我們當然可以用下標的形式去獲取集合中的指定某元素,像這樣 $("img[alt]")[0]; 匹配所有帶有alt屬性的<img>元素集合中的第一個元素。同樣,jQuery也為我們準備了類似的方法去達到相同的效果。

get(index):獲取包裝集里的一個或所有匹配元素。如果不指定參數,包裝集里的所有元素就以javascript數組形式返回;如果指定下標參數,就返回下標所對應的元素。

$("img[alt]").get(0);    <==>   $("img[alt]")[0];

如果不指定參數的話,就是以javascript數組形式返回。

var allImgWithAlt = $("img[alt]").get();

此外,如果我們已知某元素,想知道它在某包裝集里的下標,我們有另一個方法。

index(element):在包裝集里查找傳入的元素,并返回該元素在包裝集里的順序下標;如果該元素不在包裝集里,則返回-1。

element:整數,用于確定元素的下標,也可不寫。

舉個例子:得到帶有類ironman的<img>元素集合中第五個元素在所有<img>里的位置。

var pos = $("img").index($("img.ironman]").get(4) );

3、篩選元素包裝集

有時候我們需要對現有的包裝集進行添加元素。

add(expression):把表達式參數所指定的元素添加到包裝集。表達式可以是選擇器、HTML片段、DOM元素或DOM元素數組。返回的是包裝集。

expression:(字符串|元素|數組)指定添加到包裝集的元素。

舉個例子:包含alt屬性的<img>元素和包含title屬性的<img>的集合。

$("img[alt]").add("img[title]");

大家可能會想,這個不用add()也可以實現啊~

$("img[alt], img[title]");

這么寫我們不是更熟悉嗎?對,沒錯,這樣寫也可以,但是想到如果我們要充分利用到jQuery鏈的話,也許前者更好些。同樣的效果用前者可以這樣實現

$("img[alt]").addClass("RedBorder").add("img[title]").addClass("Bigger");

但是用后者的話我們就要這樣寫

$("img[alt]).addClass("RedBorder");$("img[alt], img[title]").addClass("Bigger");

哪個更好?這個是表示給包含alt屬性的<img>元素加RedBorder類,給包含alt屬性的<img>元素和包含title屬性的<img>的元素加Bigger類。

not(expression):根據表達式參數的值,從包裝集里刪除元素。如果參數是jQuery篩選選擇器,則從包裝集里刪除任何匹配表達式的元素;如果參數是元素引用,則從包裝集里刪除該元素。返回的是包裝集。

expression:(字符串|元素|數組)


舉個例子:排除集合中title內容包含puppy字段的剩余<img>元素。

$("img").not("[title*=puppy]");

filter(expression):利用傳入的選擇器表達式或篩選函數,從包裝集里篩選元素。返回的是包裝集。


expression:(字符串|函數)


filter()的與not()想達成的效果是一樣的,那就是都是在縮小集合。不一樣的是not()用的是排除條件,而filter()用的是篩選條件。大家這塊一定要理清。

舉個例子: 篩選出集合中title內容包含puppy字段的<img>元素。

$("img").filter("[title*=puppy]");

最后再介紹個方法

slice(begin, end):創建并返回新包裝集,新包裝集包含原始包裝集的連續的一部分。返回新建的包裝集。

begin:(數字)返回切片中的第一個元素的下標(從0開始)。

end:(數字,可選)返回切片中的最后一個元素的下標(從0開始),如省略,則指原始包裝集的末尾。

這個其實也沒什么的,應該很少用到,舉兩個例子大家就明白了。

選擇頁面所有元素,創建只包含前4個元素的新包裝集。

$("*").slice(0,4);

選擇頁面所有元素,創建除前4個元素以外的新包裝集。


$("*").slice(4);

4、利用關系獲取包裝集

jQuery還允許根據和其他DOM元素的關系,從DOM選擇元素。具體的方法大家去網上查一下,我列舉兩個自己經常會用到的

next(expression):返回原始包裝集元素的所有唯一的下一個兄弟元素所組成的包裝集。

expression:(字符串)

parent(expression):返回原始包裝集所有元素的唯一直接父元素所組成的包裝集。

expression:(字符串)

5、更多使用包裝集的途徑

jQuery為了最大限度的方便用戶,還提供了其他方法。

find(selector):返回新包裝集,包含原始包裝集里與傳入選擇器表達式相匹配的所有元素。注意:原始包裝集里的元素的后代,會因為與傳入的選擇器表達式相匹配而被包含在新包裝集里。

selector:(字符串)一個jQuery選擇器,元素必須匹配這個選擇器,才能成為新包裝集的一部分。

除了在包裝集里查找匹配的元素外,jQuery還提供方法查找包含指定字符串的元素。

contains(text):返回新包裝集,由包含text參數所傳入的文本字符串的元素所組成。

text:(字符串)添加到新包裝集里的元素必須包含的文本。

比如:匹配包含文本“I love you”的段落

$("p").contains("I love you");

最后介紹一個方法,通常是用來對包裝集進行測試的。

is(selector):確定包裝集里是否有元素匹配傳入的選擇器表達式。如果至少有一個元素匹配傳入的選擇器,返回true,否則返回false。

selector:(字符串)選擇器表達式,用于測試包裝集的元素。

當我們不知道自己的選擇器寫的是否對的時候,就可以拿它來測試一下

var hasImage = $("*").is("img");

如果當前頁面包含<img>元素,則hasImage為true。


6、管理jQuery鏈

其實這章開始的時候已經說了是為了讓我們能更好的運用jQuery鏈,但當時我是根據自己的理解才那么說的,但是學到這個地方的時候,書上也來了這么一句,看來jQuery鏈已經被足夠重視。引用一段話“這種鏈能力不但允許以簡潔的方式寫出強大的操作,而且提高了效率,因為它能夠把多個命令應用到包裝集里,而不必重新計算包裝集。”

end():在jQuery命令鏈內調用,以便回退到前一個包裝集。返回前一個包裝集。

有了end()方法,就使jQuery鏈能更好的操作,延續下去。

這方面仍然是菜鳥,還得從真實項目中去不斷的摸索學習。


關于jQuery的學習系列筆記我寫的會比較簡潔,更注重的是快速上手使用,當然,非常重要的知識點我還是會專門指出的。

PS:歡迎留言交流,24小時內必有回復。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

城固县| 易门县| 喀喇沁旗| 大竹县| 平利县| 许昌县| 万安县| 扎鲁特旗| 乌鲁木齐县| 大英县| 龙井市| 虎林市| 阳山县| 晋州市| 长丰县| 新郑市| 金川县| 剑阁县| 玛纳斯县| 衡水市| 太湖县| 章丘市| 漳州市| 都江堰市| 安平县| 武安市| 隆化县| 措勤县| 巫山县| 乐安县| 乌兰浩特市| 馆陶县| 阳山县| 双城市| 柏乡县| 资中县| 海城市| 洪湖市| 屯门区| 潜山县| 施甸县|