Возвращаемый текст узла (не рекурсивный) - PullRequest
4 голосов
/ 12 августа 2010

Я бы хотел вернуть значение узла ячейки таблицы.Однако метод text () спускается по всему дереву DOM и возвращает строку всех вложенных узлов (ячейка таблицы может содержать текст и html).После того, как я извлек строку узла, я хотел бы изменить ее и записать обратно в узел.Модифицированный текст состоит из текста и html.

Существует ли какой-либо метод jquery (или, возможно, Javascript), который можно использовать для получения текста (без перехода к дочерним элементам), и другая функция, которую я могу использовать для обратной записиtext + html (обычный текст () и html () не будут работать в этом случае, так как они переопределяют дочерние узлы)?

Cheers, Max

1 Ответ

4 голосов
/ 12 августа 2010

Чтобы получить текст из дочерних текстовых узлов, вы можете сделать это:

var text = $('selector').contents().map(function() {
        // If it is a textNode, return its nodeValue
    if(this.nodeType == 3) return this.nodeValue;
}).get().join('');​​​​​​

Я точно не знаю, что вы хотите сделать с текстом, но если вы хотите обработать его по ходу и заменить его новым text / html, вы должны вместо этого сделать .each() и использовать .replaceWith().

$('selector').contents().each(function() {
    if(this.nodeType == 3) {
       // do something with the text
       $(this).replaceWith('new processed value');
    }
});​​​​​​

Вот пример: http://jsfiddle.net/ZNjCW/

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