0

希望有人可以提供帮助。我需要抓取正文中的任何文本节点。即使它不包含在任何其他元素中。

我试过了:

$("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 和 Divs 中抓取它们,而不是在 body 本身中。

4

4 回答 4

1

这不是你想要的吗?

$('body').text();
于 2010-10-16T17:58:17.910 回答
1

contents()只会返回您指定的标签的子元素 - p、div、html 和 body。例如,将找不到 td 或 h1 标记内的文本节点。

使用 jQuery获取标签内所有文本节点的一种方法<body>是搜索 body 的子节点及其后代,

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

您可以在此答案中找到各种其他非 jQuery 方法来获取所有文本节点。

于 2010-10-16T18:11:07.780 回答
0

你所拥有的应该可以工作,你可以在这里测试它。我会说没有必要包含在你的选择器中,你想要在 a 中处理html的元素之外真的有任何东西吗?<body><span>

于 2010-10-16T17:59:28.890 回答
0

为什么不直接清理 HTML?

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

我必须承认,可能是 $("body").text() 做的。

于 2010-10-16T18:15:16.517 回答