0

我目前有以下代码

$(document).ready(function () {
    var html = $('#wrapper').html();
    $('#wrapper').html(html.replace(/hello/gi, 'hello<sup>&#174;</sup>'));
});

如何添加“不”功能,使其在图像中或与文档名称相关时不会替换“你好”?

因此,例如,我确实希望页面上的任何地方都替换“你好”,但不是在

<img src="path/hello.jpg"/>

或者

<a href="path/documents/hello.pdf">test</a>
4

1 回答 1

1

您可以从正文中抓取所有元素,遍历它们,查找它们是否有文本节点,获取它们的text()值,然后根据文本中抓取的内容修改 HTML。这完全避免了内部属性值,并且您不会否定a元素内的文本。

$(document).ready(function () {
    $('body *').each(function () {
        var children = this.childNodes;
        if (children.length === 1) {
            if (children[0].nodeType === 3) {
                var text = $(this).text();
                $(this).html(text.replace(/((H|h)ello)/gi, '$1<sup>&#174;</sup>'));
            }

        }
    });
});

jsFiddle

于 2013-07-23T00:50:19.237 回答