Jquery遍歷之獲取子級元素、同級元素和父級元素
Jquery的遍歷,其實就當前位置的元素相對於其他元素的位置的關系進行查找或選取HTML元素。以某項選擇開始,並沿着這條線進行移動,或向上(父級)、或向下(子級)、或水平(同級),直到找到目標元素為止,這種移動也被成為對DOM進行遍歷。
其實對於DOM來說,這個不陌生,Jquery的遍歷也就是在DOM樹上上躥下跳,當然這種上躥下跳不是沒有規則的,胡亂的找是讓人鄙視的。通俗的說,在一顆樹上(你也在樹上,已經爬上去了,哈哈),以你所在的位置為起點,以樹上有個桃子為目的地,你的這個起點也就是當前 this ,去移動去摘桃子的過程就是Jquery遍歷,所以相對應的Jquery所衍生出的遍歷方法可以分為三大類,即Jquery遍歷之父級(祖先)、同級(同胞)和子級(后代)三種。
Jquery遍歷之父級
parent() 返回當前被選元素的直接父元素;
parents() 返回當前被選元素的所有父元素,直到文檔的根部即<html>處為止;
parentsUntil() 返回介於兩個元素之間的所有當前元素的祖先元素;$("#id1").parentsUntil("#id5") 若這個id5是id1的父級元素,則此方法放回的是id1向上遍歷到id5的所有元素。
Jquery遍歷之同級
有許多方法讓我們可以在DOM樹上進行水平遍歷。下面進行簡單介紹,主要還是要實戰操作。
siblings() 返回被選元素的所有同胞(同級)元素;
////向下(next)
next() 返回被選元素的下一個同胞元素;
nextAll() 返回被選元素的所有跟隨的同胞元素,即當前元素以下的所有同胞元素;
nextUntil() 返回介於兩個給定參數之間的所有跟隨的同胞元素.
////向上(prev)
prev() 返回被選元素的下一個同胞元素;
prevAll() 返回被選元素的所有跟隨的同胞元素,即當前元素以下的所有同胞元素;
prevUntil() 返回介於兩個給定參數之間的所有跟隨的同胞元素.
Jquery遍歷之子級
children() 返回被選元素的直接子元素,就是真正的兒子,不往孫子重孫那邊去。
find() 返回被選元素的后代元素,一路向下直到最后一個后代。
Jquery遍歷each()方法
最后也是最為常用常見的方法,Jquery的each()方法,一般情況下我們遍歷出來的是一個數組,通過遍歷這個數組獲得目的元素並對其修改,each()方法最好不過了。
each() 方法規定為每個匹配元素規定運行的函數。
提示:返回 false 可用於及早停止循環。
語法:$(selector).each(function(index,element))
參數:index - 選擇器的 index 位置
element - 當前的元素(也可使用 "this" 選擇器)
結束語:
很長很長的時間我對於DOM的理解模模糊糊,感覺抓住了點東西又感覺什么也沒有學到,理論與實踐總是有差別的,通過幾個項目的實踐,對於概念的理解更加透徹,只有實踐才能讓理論的理解更加成熟,相輔相成。很多的時間花費在了頁面這一塊上,界面的處理,界面數據的處理讓我深深的陷入了這個泥潭,去年花了很長的時間狠狠的學習了一遍數據庫知識,去年下半年花了點時間再次回顧js/Jquery,起碼讓我在這個泥潭中陷入的時間短暫一點,對於我一個剛剛出道的年輕人(好像不怎么年輕了),迷茫、無知、恐懼總是伴隨,只有不斷的學習才能讓我短暫的得到安全感。
說的有點多了,就這樣吧,以后的日子還長着呢。希望得到各位的鼓勵,謝謝!!!
一、獲取div下的子元素的個數
$("div").children().length;
二、獲取div下的span子元素的個數
$("div").children("span").length;
(
this
).children(
"input:first-child"
).val();
$(
this
).children(
"input:last-child"
).val();
通過>選擇器,$(".items>input:first")
在這里轉一篇《jQuery選擇元素的方法大全》
1. 先說說通過位置選擇的幾個操作:
:first:默認情況下是相對整個頁面來說的第一個,如:li:first表示整個頁面的第一個li元素,而ul li:first表示整個頁面的第一個li元素,並且是在ul下的子元素;
:last:同上了,只是是最后一個而已;
:first- child:為每個父元素匹配第一個子元素,如li:first-child返回每個ul的第一個li元素。可以這樣理解,頁面中的元素有相同的父元素 的,並且里面又包含li元素的,那么就取第一個li元素,每個子類集合都要進行判斷,直到找出所有符合要求的li元素;
:last-child:這個也與上面相對了,只是取的是最后一個;
:only- child:返回所有沒有兄弟節點的元素,注意,文本元素不是,也就是說類似這樣的<div>hello<a href="">jquery</a></div>,對於這段會選出<a>元素;對 於$(”label:only-child“)會選出是label元素,同時它是它父類唯一的子元素的label元素;
:nth-child(n):返回第n個子節點,n從1開始,如果n取0,那么就會選擇所有的元素。如:[*]li:nth-child(2)返回li元素,並且該元素是其父元素的第二個子元素;
:nth-child(even|odd):返回偶數或奇數的子節點;
:nth-child(An+B):返回滿足表達式An+B的所有子節點,比如3n+1返回所處位置為父節點子元素的是3的倍數加1的那個子元素;
:even:頁面范圍內的處於偶數位置的元素,如:li:even返回全部偶數li元素;
:odd:頁面范圍內的處於奇數位置的元素;
:eq(n):第n個匹配的元素(n從0開始),如:li:eq(3)返回整個頁面的第四個li元素,ul li:eq(1)返回頁面中第一個ul元素下的第二個li元素,注意:只匹配一次就返回了;
:gt(n):第n個匹配元素(不包括)之后的元素(n從0開始),如:ul:gt(2)返回從第3個ul開始的所有ul元素(含第三個);
:lt(n):第n個匹配元素(不包括)之前的元素(n從0開始),如:ul:lt(2)返回從第0個和第1個ul元素;
2. 利用css選擇器進行選擇:
元素標簽名:比如說$(”a“)會選出所有鏈接元素;
#id:通過元素id進行選擇,比如說$("#form1")會選擇id為form1的元素;
.class:通過元素的CSS類來選擇,比如說$(".boldstyle")會選擇CSS為boldstyle類的元素;
標簽 名#id.class:通過某類元素的id屬性和class屬性來選擇,如:$(a#blog.boldStyle)會選擇id為blog並且CSS類型 為.boldStyle類型的鏈接元素(<a id='blog' class='.boldStyle'>);
父標簽名 子標簽名.class:通過選擇父標簽下的某種CSS類型的子元素,如:$(p a.redStyle)會選擇p段落元素中的鏈接子元素a,且其css類型為.redStyle;
3. 通過子選擇器,容器選擇器和屬性選擇器進行選擇:
*:匹配所有的元素,比如說:$(*)會把頁面中的所有元素都返回;
E:匹配標簽名為E的所有元素,如$("a")返回所有鏈接元素;
E F:匹配父元素E下的標簽名為F的所有子元素(F可以為E的子類的子類,甚至更遠);
E>F:匹配父元素E下的所有標簽名為F的直接子元素;
E+F:匹配所有標簽名為F的元素,並且有E類型的兄弟節點在該F元素之前(E,F緊挨着);
E~F:匹配前面是任何兄弟節點E的所有元素F(E,F不必緊挨着);
E:has(F):匹配標簽名為E,至少有一個標簽名為F的后代節點的所有元素E;
E.C:匹配帶有類名C的所有元素E。.C等效於*.C;
E#I:匹配id為I的所有元素E,#I等效於*#I;
E[A]:匹配帶有屬性A的所有元素E;
E[A=V]:匹配所有屬性A的值為V的元素E;
E[A^=V]:匹配所有元素E,且A的屬性值是V開頭的;
E[A$=V]:匹配所有元素E,且A的屬性值是V結尾的;
E[A*=V]:匹配所有元素E,且A的屬性值中包含有V;
4.利用jQuery自定義的選擇器進行選擇:
:button:選擇任何按鈕類型的元素,包括input[type=submit]等等;
:checkbox:選擇復選框元素;
:file:選擇所有文件類型元素,即input[type=file];
:image:選擇表單中的圖像元素,即input[type=image],注意此處和前面根據標簽名img選擇圖像有點不同哈;
:input:選擇表單元素,如<input>,<select>,<textarea>,<button>等;
:radio:選擇單選按鈕元素;
:reset:選擇復位按鈕元素,如input[type=reset],button[type=reset];
:submit:選擇提交按鈕元素;
:text:選擇文本字段元素,即input[type=text];
:animated:選擇當前處於動態控制下的元素;
:contains(hello):選擇包含文本hello的元素;
:header:選擇標題元素,如<h1>;
:parent:選擇擁有后代節點(包括文本)的元素,而排除空元素;
:selected:選擇已選中的選項元素;
:visible:選擇可見元素;
:enable:選擇界面上已經可以使用的表單元素;
:disabled:選擇界面上被禁用的表單元素;
:checked:選擇已選中的復選框或單選按鈕;