在评论中链接用户

时间:2017-05-04 18:11:54

标签: javascript jquery regex

我想在评论中关联用户。到目前为止,我做了后端(在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 个答案:

答案 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)
  });
});

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