2010-07-08 130 views
3

我有一個jQuery對象,我將檢索下一個兄弟節點,它可能是一個文本節點。 例如:jQuery:獲取下一個節點(也是文本節點)

<div id="test">some text<br/>other text</div> 

var test = $("#test"); 
var br = $("br", test); 
alert(br.next().length); // No next ELEMENTS 
alert(br.get(0).nextSibling.nodeValue); // "other text" 
alert(br.get(0).nextSibling.nextSibling); // null 

的DOM 2級允許獲得下一個節點的兄弟姐妹,但jQuery的下一個()的作品上的元素(節點類型1,我猜)。 我在問這是因爲我已經在使用jQuery,我更喜歡不直接觸摸DOM節點(也因爲jQuery本身可能會提供一個DOM抽象層,並且可能在DOM級別2不受支持的情況下運行,但是這個只是一個想法)。

如果jQuery沒有提供這個,我應該像上面那樣使用DOM,還是有更好的選擇?

編輯:我忘了一些東西:我不想只獲取文本元素,但是任何類型的節點,就像nextSibling一樣。 我正在使用.contents()遍歷內容,但是當您只需要下一個節點並且DOM提供解決方案時,這非常煩人(而且速度很慢,還有其他許多不好的事情)。編輯2:尋找jQuery源代碼,它似乎依賴於nextSibling。

回答

7

使用DOM。不要害怕它;這很容易,你似乎已經知道要使用什麼。 jQuery建立在DOM之上,對於這種情況,使用DOM實際上可以在比jQuery版本更多的瀏覽器中工作。

+0

當我從抽象層跳到另一層時,我只是覺得很髒:D(因爲這通常會使抽象的含義爲空) 謝謝,我現在感覺很安全。所以,我想使用DOM操作編寫我的插件是安全的...(?) 編輯:看到這個後感覺更安全 http://www.quirksmode.org/dom/w3c_core.html#t74 再次感謝:) – AkiRoss 2010-07-08 21:34:47

+1

直接使用DOM通常是安全的。在某些瀏覽器的邊緣有一些怪異的東西,jQuery不會保護你,特別是在IE中,但是它們現在相當知名(因此很容易被搜索到),像QuirksMode這樣的網站是非常好的資源。只要確保你經常在IE中測試:) – 2010-07-08 22:01:24