div中的javascript环绕文本

时间:2014-12-16 13:05:21

标签: javascript regex

遵循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,所以请随意使用它。

提前致谢

1 个答案:

答案 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;
        });
    }