首頁 >web前端 >js教程 >JS取得節點的兄弟,父級,子級元素的方法_javascript技巧

JS取得節點的兄弟,父級,子級元素的方法_javascript技巧

WBOY
WBOY原創
2016-05-16 17:04:511627瀏覽

先說一下JS的取得方法,其要比JQUERY的方法麻煩很多,後面以JQUERY的方法作對比。

JS的方法會比JQUERY麻煩很多,主要則是因為FF瀏覽器,FF瀏覽器會把你的換行也當最DOM元素

複製程式碼 程式碼如下:






原生的JS取得ID為test的元素下的子元素。可用:

var a = docuemnt.getElementById("test").getElementsByTagName("div");  這樣是沒有問題的

此時a.length=2;

但是如果我們換另一個方法

var b =document.getElementById("test").childNodes; 

此時b.length 在IE瀏覽器中沒問題,其依舊等於2,但是在FF瀏覽器中則會使4,是因為FF把換行也當做一個元素了。

所以,在此,我們就要做處理了,需遍歷這些元素,把元素類型為空格而且是文字都刪除。

複製程式碼 程式碼如下:

function del_ff elem.childNodes;
for(var i=0; iif(elem_child[i].nodeName == "#text" && !/s/.test(elem_child. nodeValue))
{elem.removeChild(elem_child)
}
}
}

上述函數遍歷子元素,當元素裡面有節點類型是文字類型節點的節點值是空的。就把他刪除。
nodeNames可以得到一個節點的節點類型,/s/是非空字元在JS裡的正規表示式。前面加! ,則表示是空字元

test() 方法用來偵測字串是否符合某個模式。語法是: RegExpObject.test(string)

如果字串 string 中含有與 RegExpObject 相符的文本,則傳回 true,否則傳回 false。

nodeValue表示得到這個節點裡的值。

removeChild則是刪除元素的子元素。

之後,在呼叫子,父,兄,這些屬性之前,呼叫上面的函數把空格清理一下就可以了


複製程式碼 程式碼如下:




<script><BR>function dom() {<BR>var s= document.getElementById("test");<BR>del_ff(s);    //清理空格<BR>var chils= s. childNodes;  //得到s的全部子節點<BR>var par=s.parentNode;   //得到s的父節點<BR>var ns=s.nextSbiling;   //取得s的下一個兄弟節點<BR>var ps=s.previousSbiling;  //得到s的上一個兄弟節點<BR>var fc=s.firstChild;   //取得s的第一個子節點<BR>var lc=s.lastChile;   //取得s的第一個子節點<BR>var lc=s.lastChile;   //取得s的最後一個子節點 <P>}<BR></script>

下面介紹JQUERY的父,子,兄弟節點查找方法

jQuery.parent(expr)  找父親節點,可以傳入expr進行過濾,例如$("span").parent()或$("span").parent(".class")

jQuery.parents(expr),類似jQuery.parents(expr),但是是找出所有祖先元素,不限於父元素

jQuery.children(expr).傳回所有子節點,這個方法只會傳回直接的孩子節點,不會回傳所有的子孫節點

jQuery.contents(),傳回下面的所有內容,包括節點和文字。這個方法和children()的差別就在於,包括空白文本,也會被當作一個

jQuery物件返回,children()則只會返回節點

jQuery.prev(),回到上一個兄弟節點,不是所有的兄弟節點

jQuery.prevAll(),傳回所有先前的兄弟節點

jQuery.next(),傳回下一個兄弟節點,不是所有的兄弟節點

jQuery.nextAll(),傳回所有之後的兄弟節點

jQuery.siblings(),返回兄弟姊妹節點,不分前後

jQuery.find(expr),跟jQuery.filter(expr)完全不一樣。 jQuery.filter()是從初始的jQuery物件集合中篩選出一部分,而jQuery.find()的回傳結果,不會有初始集合中的內容,例如$("p"),find("span") ,是從

元素開始找,等同於$("p span")

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn