2017-05-04 67 views
0

我想在评论中链接用户。到目前为止,我已经完成了后端(在Django),现在我正在为前端挣扎。我设法使用JavaScript编写一些内容,以便在评论的名称前面带有字符“@”时使用户名可点击。在评论中链接用户

function urlify(texts) { 
    var urlRegex = /(@[^\s]+)/g; 
    return texts.replace(urlRegex, function(url) { 
     return '<a href="/profiles/' + url.substr(1) + '/">' + url + '</a>'; 
    }) 
} 

var texts = $(".content1").text(); 

var html = urlify(texts); 

$('.test1').prepend(html); 
$('.content1').prepend(html); 

现在我可以得到第一条评论,并使用户名可点击。

如何重写代码以便每个注释都被替换?我想过一个for循环,但我不知道如何编写它。有一种简单的方法,我可以用一个函数替换模板上的所有“@”?

+1

哪里有意见吗?很难说什么来循环,因为你没有显示任何HTML例子。 –

+0

['$('.comment').each(function)'](http://api.jquery.com/each/)??没有关于您正在使用的DOM结构的一些想法,很难说任何有用的东西。 –

+0

评论与类“content1”一起保存。 Phix提出了一个工作解决方案,但感谢提示.each(函数)将在下次尝试。 – Marla

回答

1
var string = 'Hey @user123, can you upload a file'; 
function urlify(texts) { 
    var urlRegex = /(@[\w]+)/g; 
    return string.replace(urlRegex, function(match){ 
    var name = match.slice(1); 
    return '<a href="https://stackoverflow.com/users/profiles/' + name + '">' + match + '</a>' 
    }) 
} 

console.log(urlify(string)); 

返回Hey <a href="https://stackoverflow.com/users/profiles/user123">@user123</a>, can you upload a file

编辑多个:

使用字符串嘿@ user123,你可以上传文件,否则@admin可你看看

产量:

Hey <a href="https://stackoverflow.com/users/profiles/user123">@user123</a>, can you upload a file, otherwise <a href="https://stackoverflow.com/users/profiles/admin">@admin</a> can you take a look

...所以没有必要的循环。

编辑2:

function urlify(texts) { 
    var urlRegex = /(@[\w]+)/g; 
    return texts.replace(urlRegex, function(match){ 
    var name = match.slice(1); 
    return '<a href="https://stackoverflow.com/users/profiles/' + name + '">' + match + '</a>' 
    }) 
} 

$(document).ready(function(){ 
    var text = $('.comment').html(function(index, text) { 
    return urlify(text) 
    }); 
}); 

http://plnkr.co/edit/tehEF4ESYXf4TTRR5lz8?p=preview

+0

我不明白。我需要一个针对网站50或100条评论的解决方案,而不是在js中定义的一个示例字符串。你的解决方案给了我相同的结果,实际上它几乎与刚刚使用的slice(1)相同的代码...我如何替换!ALL!具有类“content1”的匹配。 无论如何感谢您的努力。我希望我会找到一些 – Marla

+0

@玛拉看到更新。改变课程和其他你需要的东西。 – Phix

+0

非常感谢。奇迹般有效。对不起,没有具体的第一个地方... – Marla