2011-08-31 76 views
0

我正在为我的博客上的评论做出回复系统。当有人点击“回复”时,它将采用评论ID并在评论文本框中放置两个括号。如何将文本转换为使用jQuery的链接?

基本上它会看起来像这样>> 123456789,它不是一个链接或任何它只是纯文本。一旦它被张贴在括号转换为>所以它会看起来像这样在最后的源代码:>>123456789(每个ID有9号)

我需要做的是文本的链接。

这里是什么应该发生: http://jsfiddle.net/KFXFd/
这里发生了什么,当我尝试改变类: http://jsfiddle.net/qWYCQ/

注意的是,类必须.commenttext的代替,但对于某些原因,我无法得到它的工作(我对js很糟糕)。

+0

_“该类必须是'.commentheader'而不是'body'”_为什么?而且,你的意思是'.commenttext'? –

回答

1

您应该在每个循环中使用this来引用当前元素。您在您的Fiddle演示中使用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) 
+0

非常感谢,您和托马斯版本都能够完美工作。 – Ex1

+0

@ Ex1 - 您可以将此标记为答案吗? – ShankarSangoli

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的each()中使用$(this)以便引用当时正在处理的acctual元素。

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

希望这是有道理的。

相关问题