我正在尝试为我博客上的评论制作回复系统。当有人点击“回复”时,它会获取评论ID,并在评论文本框中放置两个括号。
基本上它看起来像>>> 123456789 ,它不是链接或任何东西,它只是纯文本。发布后,括号将转换为>
,因此最终源代码中的内容如下所示: >>123456789
(每个ID都有9个数字)
我需要将该文本转换为链接。
这是应该发生的事情:
http://jsfiddle.net/KFXFd/
以下是我尝试更改课程时会发生的事情:
http://jsfiddle.net/qWYCQ/
请注意,该类必须是 .commenttext 而不是 body ,但由于某种原因,我无法使其正常工作(我在js时很糟糕)。
答案 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(/(>)/g,"") + "\">" + matched + "</a>";}));
});
})(jQuery)
答案 1 :(得分:0)
这是工作javascript:
$(document).ready(function(){
var thePage = $(".commenttext");
thePage.each(function () {
$(this).html($(this).html().replace(/>>([0-9]{9})/, "<a href=\"#$1\">$1</a>"));
});
});
您的代码存在各种问题。
首先,您需要在jquery的$(this)
中使用each()
,以便引用您当时正在处理的acctual元素。
其次我改变了你的replace()
。正则表达式中()
周围的东西抓住一个匹配,您可以使用$1
(或$2
等在下一个参数中引用该匹配... $ 1是第三个匹配的第二个$ 3的第一个$ 2等等。)
希望这是有道理的。