8AV国产精品爽爽Va在线观看_国产精品视频免费播放_综合精品综合一区二区_蜜臀福利视频免费观看

品優(yōu)網(wǎng)絡(luò) 十六年(2003-2018)專注
網(wǎng)站建設(shè)中比較文檔位置
日期:2014-12-16 作者:admin 來源: 瀏覽次數(shù):0 網(wǎng)友評論 0

企業(yè)網(wǎng)站推廣1

1、DOMElement.contains(DOMNode)

這個方法起先用在 IE ,用來確定 DOM Node 是否包含在另一個 DOM Element 中。

當嘗試優(yōu)化 CSS 選擇器遍歷(像:“#id1 #id2”),這個方法很有用。你可以通過 getElementById 得到元素,然后使用 .contains() 確定 #id1 實際上是否包含 #id2。

注意點:如果 DOM Node 和 DOM Element 相一致,.contains() 將返回 true ,雖然,一個元素不能包含自己。

這里有一個簡單的執(zhí)行包裝,可以運行在: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)

這個方法是 DOM Level 3 specification 的一部分,允許你確定 2 個 DOM Node 之間的相互位置。這個方法比 .contains() 強大。這個方法的一個可能應(yīng)用是排序 DOM Node 成一個詳細**的順序。

使用這個方法你可以確定關(guān)于一個元素位置的一連串的信息。所有的這些信息將返回一個比特碼(Bit,比特,亦稱二進制位)。

對于那些,人們知之甚少。比特碼是將多重數(shù)據(jù)存儲為一個簡單的數(shù)字(譯者注:0 或 1)。你更終打開 / 關(guān)閉個別數(shù)目(譯者注:打開/關(guān)閉對應(yīng) 0 /1),將給你一個更終的結(jié)果。

這里是從 NodeA.compareDocumentPosition(NodeB) 返回的結(jié)果,包含你可以得到的信息。

Bits  Number        Meaning
000000 0      元素一致
000001 1      節(jié)點在不同的文檔(或者一個在文檔之外)
000010 2      節(jié)點 B 在節(jié)點 A 之前
000100 4      節(jié)點 A 在節(jié)點 B 之前
001000 8      節(jié)點 B 包含節(jié)點 A
010000 16     節(jié)點 A 包含節(jié)點 B
100000 32     瀏覽器的私有使用

現(xiàn)在,這意味著一個可能的結(jié)果類似于:

<div>
 <div></div>
</div>
<script>
 alert( document.getElementById("a").compareDocumentPosition(document.getElementById("b")) == 20);
</script>

一旦一個節(jié)點 A 包含另一個節(jié)點 B,包含 B(+16) 且在 B 之前(+4),則更后的結(jié)果是數(shù)字 20 。如果你查看比特發(fā)生的變化,將增加你的理解。

000100 (4) + 010000 (16) = 010100 (20)

這個,毫無疑問,有助于理解單個更混亂的 DOM API 方法。當然,他的價值當之無愧的。

現(xiàn)在,DOMNode.compareDocumentPosition 在 Firefox 和 Opera 中是可用的。然而,有一些技巧,我們可以用來在 IE 中執(zhí)行他。

// Compare Position - MIT Licensed, John Resig
function comparePosition(a, b){
 return a.compareDocumentPosition ?
 a.compareDocumentPosition(b) :
 a.contains ?
  ( a != b && a.contains(b) && 16 ) +
  ( a != b && b.contains(a) && 8 ) +
  ( a.sourceIndex >= 0 && b.sourceIndex >= 0 ?
   (a.sourceIndex < b.sourceIndex && 4 ) +
   (a.sourceIndex > b.sourceIndex && 2 ) :
   1 ) :
  0;
}

IE 提供給我們一些可以使用的方法和屬性。開始,使用 .contains() 方法(如我們前面所討論的),以便給我們包含(+16)或者被包含(+8)的結(jié)果。IE 還有一個 .sourceIndex 屬性在所有的 DOM Element 對應(yīng)著元素在文檔中的位置,例如:document.documentElement.sourceIndex == 0。因為我們有這個信息,我們可以完成兩個 compareDocumentPosition 難題:在前面(+2)和在后面(+4)。另外,如果一個元素不在當前的文檔,.sourceIndex 將等于 -1,這個給我們另外一個回答(+1)。更后,通過這個過程的推斷,我們可以確定如果一個元素等于他本身,返回一個空的比特碼(+0)。

這個函數(shù)可以在 Internet Explorer、Firefox 和 Opera 中運行。但在 Safari 中卻有殘缺功能(因為他只有 contains() 方法,而沒有 .sourceIndex 屬性。我們只能得到 包含(+16),被包含(+8),其他的所有結(jié)果都將返回(+1)代表一個斷開)。

PPK 提供了一個關(guān)于通過創(chuàng)建一個 getElementsByTagNames 方法使新功能可以被使用的很棒的例子。讓我們改編他到我們的新方法中:

我們現(xiàn)在可以使用他來按次序構(gòu)建一個站點的目錄:

getElementsByTagNames("h1, h2, h3");

雖然 Firefox 和 Opera 都采取了一些主動落實這一方法。我依然期待看到更多的瀏覽器進入,以幫助向前推動。

翻譯自:《Comparing Document Position》

// Original by PPK quirksmode.org
function getElementsByTagNames(list, elem) {
        elem = elem || document;

        var tagNames = list.split(','), results = [];

        for ( var i = 0; i < tagNames.length; i++ ) {
        var tags = elem.getElementsByTagName( tagNames[i] );
        for ( var j = 0; j < tags.length; j++ )
        results.push( tags[j] );
        }

        return results.sort(function(a, b){
        return 3 - (comparePosition(a, b) & 6);
        });
}

網(wǎng)站建設(shè)中比較文檔位置,歡迎咨詢合作。

企業(yè)網(wǎng)站推廣2

查看更多寧波網(wǎng)站制作公司網(wǎng)站建設(shè)中位置文檔

寧波網(wǎng)站建設(shè) (http://www.sdjianlida.com/) 版權(quán)與免責聲明
    1、凡本網(wǎng)注明“來源:寧波品優(yōu)網(wǎng)絡(luò)”字樣的所有作品,版權(quán)均屬于浙江省寧波海曙品優(yōu)網(wǎng)絡(luò)技術(shù)有限公司,如需轉(zhuǎn)載、摘編或利用其它方式使用上述作品,請與本網(wǎng)聯(lián)系。
    2、凡本網(wǎng)注明“來源:XXX(非寧波品優(yōu)網(wǎng)絡(luò))”的作品,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點和對其真實性負責。寧波網(wǎng)站建設(shè)的轉(zhuǎn)載僅為信息的廣泛傳播,如有侵權(quán)請及時告之刪除。
返回:寧波網(wǎng)站制作公司