Подтвердить что ты не робот

JQuery найти все элементы с текстом

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

4b9b3361

Ответ 1

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

$('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 />")

Ответ 2

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

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

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