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 позволяет получить следующего брата NODE, но jQuery next() работает с элементами (я думаю, nodeType 1). Я спрашиваю об этом, потому что я уже использую jQuery и предпочитаю не касаться узлов DOM напрямую (также потому, что сам jQuery может обеспечивать уровень абстракции от DOM и может работать там, где уровень DOM 2 не поддерживается, но это только мысль).

Если jQuery не предоставляет этого, должен ли я использовать DOM, как указано выше, или есть варианты получше?

РЕДАКТИРОВАТЬ: я кое-что забыл: я не хочу получать ТОЛЬКО текстовые элементы, а любой узел, как это делает nextSibling. Я использую .contents() для перебора содержимого, но это довольно раздражает (и медленно, и много других плохих вещей), когда вам просто нужен следующий узел, а DOM предоставляет решение.

EDIT2: Глядя на исходный код jQuery, кажется, что он полагается на nextSibling.


person AkiRoss    schedule 08.07.2010    source источник


Ответы (1)


Используйте ДОМ. Не бойтесь этого; это легко, и вы, кажется, уже знаете, что использовать. jQuery построен поверх DOM, и для таких вещей использование DOM на самом деле будет работать в большем количестве браузеров, чем версия jQuery.

person Tim Down    schedule 08.07.2010
comment
Я просто чувствую себя грязным, когда дело доходит до перехода с одного уровня абстракции на другой: D (поскольку это обычно сводит на нет смысл абстракций). Спасибо, теперь я чувствую себя в безопасности. Итак, я думаю, что писать свои плагины, используя манипуляции с DOM, безопасно... (?) РЕДАКТИРОВАТЬ: я чувствую себя намного спокойнее после просмотра этого quirksmode.org/dom/w3c_core.html#t74 Еще раз спасибо :) - person AkiRoss; 09.07.2010
comment
Использование DOM напрямую, как правило, безопасно. В некоторых браузерах есть некоторые странности, от которых jQuery действительно защищает вас, особенно в IE, но в наши дни они достаточно хорошо известны (следовательно, их легко найти), а такие сайты, как QuirksMode, являются отличными ресурсами. Просто убедитесь, что вы часто тестируете в IE :) - person Tim Down; 09.07.2010