jQuery: получение следующего узла (также текстовых узлов) - PullRequest
3 голосов
/ 09 июля 2010

У меня есть объект 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 предлагает решение.

РЕДАКТИРОВАТЬ 2: Смотря исходный код jQuery, кажется, что он опирается на nextSibling.

1 Ответ

7 голосов
/ 09 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...