javascriptcontains和compareDocumentPosition方法來確定是否HTML節(jié)點(diǎn)間的關(guān)系_javascript技巧
來源:懂視網(wǎng)
責(zé)編:小采
時(shí)間:2020-11-27 20:47:07
javascriptcontains和compareDocumentPosition方法來確定是否HTML節(jié)點(diǎn)間的關(guān)系_javascript技巧
javascriptcontains和compareDocumentPosition方法來確定是否HTML節(jié)點(diǎn)間的關(guān)系_javascript技巧:從那起,我已經(jīng)對(duì)這些方法做了大量的研究,并且已經(jīng)在很多場(chǎng)合使用他們。在很多任務(wù)中,他們被證明是非常有用的(特別關(guān)于結(jié)構(gòu)的抽象 DOM 選擇器)。 1、DOMElement.contains(DOMNode) 這個(gè)方法起先用在 IE ,用來確定 DOM Node 是否包含在另一個(gè)
導(dǎo)讀javascriptcontains和compareDocumentPosition方法來確定是否HTML節(jié)點(diǎn)間的關(guān)系_javascript技巧:從那起,我已經(jīng)對(duì)這些方法做了大量的研究,并且已經(jīng)在很多場(chǎng)合使用他們。在很多任務(wù)中,他們被證明是非常有用的(特別關(guān)于結(jié)構(gòu)的抽象 DOM 選擇器)。 1、DOMElement.contains(DOMNode) 這個(gè)方法起先用在 IE ,用來確定 DOM Node 是否包含在另一個(gè)
從那起,我已經(jīng)對(duì)這些方法做了大量的研究,并且已經(jīng)在很多場(chǎng)合使用他們。在很多任務(wù)中,他們被證明是非常有用的(特別關(guān)于結(jié)構(gòu)的抽象 DOM 選擇器)。
1、DOMElement.contains(DOMNode)
這個(gè)方法起先用在 IE ,用來確定 DOM Node 是否包含在另一個(gè) DOM Element 中。
當(dāng)嘗試優(yōu)化 CSS 選擇器遍歷(像:“#id1 #id2”),這個(gè)方法很有用。你可以通過 getElementById 得到元素,然后使用 .contains() 確定 #id1 實(shí)際上是否包含 #id2。
注意點(diǎn):如果 DOM Node 和 DOM Element 相一致,.contains() 將返回 true ,雖然,一個(gè)元素不能包含自己。
這里有一個(gè)簡(jiǎn)單的執(zhí)行包裝,可以運(yùn)行在:Internet Explorer, Firefox, Opera, and Safari。
代碼如下:
function contains(a, b) {
return a.contains ? a != b && a.contains(b) : !!(a.compareDocumentPosition(arg) & 16);
}
2、NodeA.compareDocumentPosition(NodeB)
這個(gè)方法是 DOM Level 3 specification 的一部分,允許你確定 2 個(gè) DOM Node 之間的相互位置。這個(gè)方法比 .contains() 強(qiáng)大。這個(gè)方法的一個(gè)可能應(yīng)用是排序 DOM Node 成一個(gè)詳細(xì)精確的順序。
使用這個(gè)方法你可以確定關(guān)于一個(gè)元素位置的一連串的信息。所有的這些信息將返回一個(gè)比特碼(Bit,比特,亦稱二進(jìn)制位)。
對(duì)于那些,人們知之甚少。比特碼是將多重?cái)?shù)據(jù)存儲(chǔ)為一個(gè)簡(jiǎn)單的數(shù)字(譯者注:0 或 1)。你最終打開 / 關(guān)閉個(gè)別數(shù)目(譯者注:打開/關(guān)閉對(duì)應(yīng) 0 /1),將給你一個(gè)最終的結(jié)果。
這里是從 NodeA.compareDocumentPosition(NodeB) 返回的結(jié)果,包含你可以得到的信息。
Bits Number Meaning
000 0 元素一致
001 1 節(jié)點(diǎn)在不同的文檔(或者一個(gè)在文檔之外)
010 2 節(jié)點(diǎn) B 在節(jié)點(diǎn) A 之前
100 4 節(jié)點(diǎn) A 在節(jié)點(diǎn) B 之前
000 8 節(jié)點(diǎn) B 包含節(jié)點(diǎn) A
000 16 節(jié)點(diǎn) A 包含節(jié)點(diǎn) B
000 32 瀏覽器的私有使用
現(xiàn)在,這意味著一個(gè)可能的結(jié)果類似于:
代碼如下:
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
javascriptcontains和compareDocumentPosition方法來確定是否HTML節(jié)點(diǎn)間的關(guān)系_javascript技巧
javascriptcontains和compareDocumentPosition方法來確定是否HTML節(jié)點(diǎn)間的關(guān)系_javascript技巧:從那起,我已經(jīng)對(duì)這些方法做了大量的研究,并且已經(jīng)在很多場(chǎng)合使用他們。在很多任務(wù)中,他們被證明是非常有用的(特別關(guān)于結(jié)構(gòu)的抽象 DOM 選擇器)。 1、DOMElement.contains(DOMNode) 這個(gè)方法起先用在 IE ,用來確定 DOM Node 是否包含在另一個(gè)