在所有商标和注册商标符号周围添加上标标签
我想在我的页面中的每个™,®,©周围添加标签。
我发现了这个问题: 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
,这就是我如何得到我的解决方案。 如果这个适合你,请告诉我!