JS和JQuery獲取當前元素的兄弟及父級等元素的方法
- 2019 年 11 月 13 日
- 筆記
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>
,等同於 $("p span")
JS獲取:
var chils= s.childNodes; //得到s的全部子節點 var par=s.parentNode; //得到s的父節點 var ns=s.nextSibling; //獲得s的下一個兄弟節點 var ps=s.previousSibling; //得到s的上一個兄弟節點 var fc=s.firstChild; //獲得s的第一個子節點 var lc=s.lastChild; //獲得s的最後一個子節點
JS獲取節點父級,子級元素:JS的方法會比JQUERY麻煩很多,主要則是因為FF、Google瀏覽器會把你的換行也當作DOM元素:空的text元素,目前IE也是這樣
<div id="test"> <div></div> <div></div> </div>
原生的JS獲取ID為test的元素下的子元素。
var a = docuemnt.getElementById("test").getElementsByTagName("div");
這樣是沒有問題的,此時 a.length=2;
但是如果我們換另一種方法:
var b =document.getElementById("test").childNodes;