Jquery найти все элементы с текстом - PullRequest
10 голосов
/ 22 июня 2010

Как лучше всего сканировать через весь DOM, найти любой элемент с текстом и обернуть его в класс span? Thanx

Ответы [ 2 ]

14 голосов
/ 22 июня 2010

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

$('body *').contents().filter(function() { 
    return (this.nodeType == 3) && this.nodeValue.match(/\S/); 
}).wrap("<span />")

Чтобы обернуть все текстовые узлы, включая те, которые содержат только пробелы:

$('body *').contents().filter(function() { 
    return (this.nodeType == 3) && this.nodeValue.length > 0; 
}).wrap("<span />")
1 голос
/ 22 июня 2010

Вы можете использовать .each для итерации по всем элементам:

$('*').each(function(){
    if($(this).text())
    {
        $(this).wrapInner('<span />');
    }
})

Я не тестировал этот фрагмент кода, но это довольно просто.Все, что вам нужно узнать, это .each , wrapInner и * селектор.Здесь очень полезны документы jQuery.

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