jQuery或CSS:用<sup>®</sup>替换®标记

时间:2010-12-20 16:42:20

标签: jquery css

我有这个HTML标题:

<h1>Time Matters&reg;</h1> (equals to: Time Matters®)

我需要一种通过CSS或jQuery控制'&amp; reg; '标记的方法。据我所知,我认为用CSS定位“&amp; reg; ”是不可能的,是吗?

现在,如果使用jQuery,我需要在&lt;中包含'&amp; reg; '。 sup>标签,像这样:

<h1>Time Matters<sup>&reg;</sup></h1>

...这样我可以通过CSS定位元素。

我尝试调整this tutorial,但代码封装了&lt; { span&gt;标签

知道怎么做到这一点?任何帮助将不胜感激。

感谢。

3 个答案:

答案 0 :(得分:8)

正常的Javascript String .replace()应该这样做:

$(function() {
    $('h1').each(function(i, elem) {
        $(elem).html(function(i, html) {
            return html.replace(/(®)/, "<sup>$1</sup>");
        });
    });
});

示例:http://www.jsfiddle.net/4yUqL/24/

// off-topic

我刚刚意识到这一点,哇这看起来非常令人印象深刻

(®)(®)

答案 1 :(得分:1)

有一个Javascript函数用于执行此操作,称为replace()。 More info here

我建议将元素的内容分配给变量,使用replace函数替换<sup>封闭符号的符号,然后使用DOM将其附加到文档

答案 2 :(得分:0)

这里是一个Javascript解决方案:

var replaceHTMLCharacterEntities = function (expression, tag, superscript) {
    var regex = new RegExp(expression, 'g'),
        iTag = tag.toUpperCase(),
        iSuperscript = expression[superscript](),
        tags = document.getElementsByTagName(iTag),
        i = 0,
        tagsLength = tags.length,
        html = "";
    for (i; i < tagsLength; i++) {
        html = tags[i].innerHTML.replace(regex, iSuperscript);
        tags[i].innerHTML = html;
    }
};
replaceHTMLCharacterEntities("\u00a9", "h1", "sup");
replaceHTMLCharacterEntities("\u00AE", "p", "sub");
replaceHTMLCharacterEntities("\u24C8", "p", "sub");

Here a jsfiddle.