如何使用jQuery将文本转换为链接?

时间:2011-08-31 15:58:27

标签: jquery

我正在尝试为我博客上的评论制作回复系统。当有人点击“回复”时,它会获取评论ID,并在评论文本框中放置两个括号。

基本上它看起来像>>> 123456789 ,它不是链接或任何东西,它只是纯文本。发布后,括号将转换为>,因此最终源代码中的内容如下所示: >>123456789 (每个ID都有9个数字)

我需要将该文本转换为链接。

这是应该发生的事情: http://jsfiddle.net/KFXFd/
以下是我尝试更改课程时会发生的事情: http://jsfiddle.net/qWYCQ/

请注意,该类必须是 .commenttext 而不是 body ,但由于某种原因,我无法使其正常工作(我在js时很糟糕)。

2 个答案:

答案 0 :(得分:1)

您应该在每个循环中使用this引用当前元素。您在小提琴演示中使用了thePage,其实际上包含了具有类.commentheader的所有元素。试试这个。

正在使用 demo

(function($) {
    var thePage = $(".commenttext");
    thePage.each(function () {
       $(this).html($(this).html().replace(/(>)(>)[0-9]{9}/ig,
               function(matched) {
                   return "<a href=\"#" + matched.replace(/(&gt;)/g,"") + "\">" + matched + "</a>";})); 
    });
})(jQuery)

答案 1 :(得分:0)

这是工作javascript:

$(document).ready(function(){
    var thePage = $(".commenttext");

    thePage.each(function () {
        $(this).html($(this).html().replace(/&gt;&gt;([0-9]{9})/, "<a href=\"#$1\">$1</a>"));
    });
});

您的代码存在各种问题。

首先,您需要在jquery的$(this)中使用each(),以便引用您当时正在处理的acctual元素。

其次我改变了你的replace()。正则表达式中()周围的东西抓住一个匹配,您可以使用$1(或$2等在下一个参数中引用该匹配... $ 1是第三个匹配的第二个$ 3的第一个$ 2等等。)

希望这是有道理的。