将文本(HTML标签之外)更改为链接

时间:2013-05-16 09:14:17

标签: javascript jquery html

我想要一个javascript,在页面上搜索正则表达式(比如说“abcabc”)并用链接替换该正则表达式。

我现在的尝试是:

function replText(text) {
    var exp = new RegExp("(abcabc)", "g");

    return text.replace(exp, "<a href=\"http://my_site.com/$1\">$1</a>"); 
}


// http://stackoverflow.com/questions/5494259/jquery-change-all-elements-text
// Thanks to Box9!
function recursiveReplace(node) {
    if (node.nodeType == 3) { // text node
        node.nodeValue = replText(node.nodeValue);
    } else if (node.nodeType == 1) { // element
        $(node).contents().each(function () {
            recursiveReplace(this);
        });
    }
}

recursiveReplace(document.body);

哪种......有点作品。但话说回来,不是因为它不会创建链接,而是创建链接     &lt; a href =“ 类似字符串(使用转义的HTML实体)。

我可能会使用Jquery,但我不是那么专家。愿任何人都知道如何做到这一点?我不想在HTML-Tags中替换它(比如'class =“abcabc”'等等)。

提前致谢!

1 个答案:

答案 0 :(得分:3)

尝试

var exp = new RegExp("(abcabc)", "g");
function replText(text) {   
    return text.replace(exp, "<a href=\"http://my_site.com/$1\">$1</a>"); 
}


// http://stackoverflow.com/questions/5494259/jquery-change-all-elements-text
// Thanks to Box9!
function recursiveReplace(node) {
    if (node.nodeType == 3) { // text node
        $(node).replaceWith(replText(node.nodeValue))
    } else if (node.nodeType == 1) { // element
        $(node).contents().each(function () {
            recursiveReplace(this);
        });
    }
}

recursiveReplace(document.body);

演示:Fiddle