我想在评论中关联用户。到目前为止,我做了后端(在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
循环,但我不知道如何写它。有一种简单的方法可以用一个函数替换模板上的所有“@”吗?
答案 0 :(得分: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="/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)
});
});