使用 Jquery 抓取 BODY 中的任何文本节点
Posted
技术标签:
【中文标题】使用 Jquery 抓取 BODY 中的任何文本节点【英文标题】:Grab any Text Node within the BODY using Jquery 【发布时间】:2011-04-26 09:21:18 【问题描述】:希望有人可以提供帮助。我需要抓取正文中的任何文本节点。即使它不包含在任何其他元素中。
我试过了:
$("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 本身中。
【问题讨论】:
哪个是正确的答案? ;-) 【参考方案1】:这不是你想要的吗?
$('body').text();
【讨论】:
【参考方案2】: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
您可以在此answer 中找到各种其他非 jQuery 方法来获取所有文本节点。
【讨论】:
【参考方案3】:你所拥有的应该可以工作,you can test it here。我想说没有必要在你的选择器中包含html
,在<span>
中你想要处理的<body>
元素之外真的有什么吗?
【讨论】:
【参考方案4】:为什么不直接清理 HTML?
var strInputCode=$("body").html();
var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");
alert("Output text:\n" + strTagStrippedText);
我必须承认可能是 $("body").text() 做的。
【讨论】:
以上是关于使用 Jquery 抓取 BODY 中的任何文本节点的主要内容,如果未能解决你的问题,请参考以下文章
使用 Html Agility Pack 从 HTML BODY 节点中提取内部文本