我想在评论中链接用户。到目前为止,我已经完成了后端工作(在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
循环,但不确定如何编写。有一种简单的方法可以用一个函数替换模板上的所有“ @”吗? 最佳答案
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="/users/profiles/' + name + '">' + match + '</a>'
})
}
console.log(urlify(string));
返回
Hey <a href="/users/profiles/user123">@user123</a>, can you upload a file
编辑多个:
使用字符串Hey @ user123,您可以上传文件吗,否则可以使用@admin看一下
产量:
Hey <a href="/users/profiles/user123">@user123</a>, can you upload a file, otherwise <a href="/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="/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