遵循JLRishe在我之前的问题中提出的建议
Javascript find all text except those in <a> tag
我创建了一个新请求,只是为了清理我需要实现的目标。 我有一个包含这样的html文档。
<div id="dictionable">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<br/><br/>
<a href="#lorem">lorem</a>
<br/><br/>
<p>lorem</p>
</div>
我需要征服的是找到所有出现的单词(例如“lorem”)并用标签包装它。 我想排除A标记,因为它们是链接,不符合我的需求。
在我之前的问题中,我了解了正则表达式是如何糟糕的。有没有使用DOM的帮助?
我在这个项目中使用jquery,所以请随意使用它。
提前致谢
答案 0 :(得分:0)
我最终找到了实现这一目标的方法:
var base = $('#container');
replace(base);
function replace(container) {
$(container).contents().filter(function () { return !$(this).is('a') && ($.trim($(this).text())) !== '' }).each(function () {
if (this.nodeType === 1) return replace(this);
if (this.nodeType === 3) {
var text = $.trim($(this).text());
var pattern = new RegExp(this, 'gim');
text = text.replace(pattern, '<a href="#' + this + '">' + this + '</a>');
$(this).replaceWith(text);
}
return null;
});
}