Каким будет наилучший способ сканирования через все DOM, найти любой элемент, который имеет текст и обернуть его в классе span? Thanx
JQuery найти все элементы с текстом
Ответ 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 здесь очень полезна.