首頁 >web前端 >js教程 >js jquery取得目前元素的兄弟級 上一個 下一個元素_jquery

js jquery取得目前元素的兄弟級 上一個 下一個元素_jquery

WBOY
WBOY原創
2016-05-16 15:41:191383瀏覽

var chils= s.childNodes;  //得到s的全部子節點

var par=s.parentNode;   //得到s的父節點

var ns=s.nextSbiling;   //得到s的下一個兄弟節點

var ps=s.previousSbiling;  //得到s的上一個兄弟節點

var fc=s.firstChild;   //得到s的第一個子節點

var lc=s.lastChile;   //取得s的最後一個子節點

JS取得節點父級,子級元素

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

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

<div id="test">
<div></div>
<div></div>
</div>

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

可以用:

var a = docuemnt.getElementById("test").getElementsByTagName_r("div"); 

這樣是沒有問題的

此時a.length=2;

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

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

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

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

function del_ff(elem){
var elem_child = elem.childNodes;
for(var i=0; i<elem_child.length;i++){
if(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則是刪除元素的子元素。

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

<div id="test">
<div></div>
<div></div>
</div>

<script>
function dom() {
var s= document.getElementByIdx_x("test");
del_ff(s);  //清理空格
var chils= s.childNodes; //得到s的全部子节点
var par=s.parentNode;  //得到s的父节点
var ns=s.nextSbiling;  //获得s的下一个兄弟节点
var ps=s.previousSbiling; //得到s的上一个兄弟节点
var fc=s.firstChild;  //获得s的第一个子节点
var lc=s.lastChile;  //获得s的最后一个子节点
}
</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")

以上介紹就是本文關於js jquery取得目前元素的兄弟級 上一個 下一個元素,希望對大家有幫助。

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