Захватите любой текстовый узел внутри тела, используя Jquery - PullRequest
0 голосов
/ 16 октября 2010

Надеясь, кто-то может помочь.Мне нужно захватить любой текстовый узел внутри тела.Даже если он НЕ содержится ни в каком другом элементе.

Я пробовал:

$("p, div, html, body").each(function(){
    $(this).contents().filter(function() {
        var regExText = /(\w|\d|,|;|&)/;                                           
        if (this.nodeType == 3 && regExText.test(this.nodeValue)) {
            $(this).wrap('<span></span>');
            }
      });
});

Это захватывает их в Ps и Div, но не в самом теле.

Ответы [ 4 ]

1 голос
/ 16 октября 2010

contents() будет возвращать только дочерние элементы указанных вами тегов - p, div, html и body. Например, текстовый узел внутри тега td или h1 не будет найден.

Один из способов получить все текстовые узлы внутри тега <body> с помощью jQuery - поиск потомков тела и его потомков,

$("body, body *").contents().filter(function() {
    // if this is a text node and matches regex
    // then do something to it
}

В этом ответе .

вы можете найти различные другие не-jQuery-подходы, чтобы получить все текстовые узлы.
1 голос
/ 16 октября 2010

Это не то, что вы хотите?

$('body').text();
0 голосов
/ 16 октября 2010

Почему бы вам просто не очистить HTML?

var strInputCode=$("body").html();
var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");
alert("Output text:\n" + strTagStrippedText);  

Я должен признать, что, вероятно, $ ("body"). Text () делает вещь

0 голосов
/ 16 октября 2010

То, что у вас должно работать, вы можете проверить здесь . Я бы сказал, что нет необходимости включать html в ваш селектор, но есть ли что-то кроме элемента <body>, с которым вы хотите иметь дело в <span>?

...