在所有商标和注册商标符号周围添加上标标签

我想在我的页面中的每个™,®,©周围添加标签。

我发现了这个问题: CSS上标注册商标让我开始了。

该脚本的工作原理是将标记放置在适当的位置,但它在每个标记周围添加两个标记而不是一个标记。

这是我的JS添加标签:

 jQuery("body").html( jQuery("body").html().replace(/®/gi, '®').replace(/®/gi, '®'). replace(/™/gi, ''). replace(/™/gi, ''). replace(/©/gi, '©'). replace(/©/gi, '©') ); 

如何确保每个符号只添加一次标记? 某种条件可能吗?

我没有重写整个标记(并删除所有绑定事件),而是采取类似的方式:

 $('body :not(script)').contents().filter(function() { return this.nodeType === 3; }).replaceWith(function() { return this.nodeValue.replace(/[™®©]/g, '$&'); }); 

演示: http //jsfiddle.net/QTfxC/

这对我有用。

 $("p,h1,h2,h3,h4,li,a").each(function(){ $(this).html($(this).html().replace(/®/gi, '®').replace(/®/gi, '® ')); }); 

尽管面对正确的方向,@ VisioN的答案对我来说效果不佳。 我调整了一下:

 var regexp = /[\xAE]/; $('body :not(script,sup)').contents().filter(function() { return this.nodeType === 3 && (regexp.test(this.nodeValue)); }).replaceWith(function() { return this.nodeValue.replace(regexp, '$&'); }); 

此方法使用字符hex ,而不是使用字符代码。 我在character-codes.com上查找了hex,并选择了®字符的字符hex。 值是AE ,这就是我如何得到我的解决方案。 如果这个适合你,请告诉我!