如何使用jQuery的.each()替换text / regex?

时间:2015-07-22 04:17:03

标签: javascript jquery html regex

我在这里有这个代码:

var tweetText = $("#tweet_text").text();
var replaced = replace(tweetText);

document.getElementById("tweet_text").innerHTML = replaced;

它从文本元素中获取文本,并突出显示提及和URL以使其可单击。 这是replace()代码:

function replace(text) {
    return text.replace(/([@#])([a-z\d_]+)/ig, function(_, marker, tag) {
        if (marker === "@")
            return '<a href="?r=site/twitterprofile&q=$1">' + "@" + tag + '</a>';
        return '<a href="?r=site/hashtag&q=$2">' + "#" + tag + '</a>';
    });
}

我有很长的div / tweets列表,当我运行replace()时,它只将模式匹配功能应用于一个div。 为了解决这个问题,我考虑使用#tweet_text收集所有.each() div,然后在循环后应用replace()函数。

有人可以帮我这样做吗?

2 个答案:

答案 0 :(得分:3)

$('.your-tweet-class').each(function() {
    $(this).text( replace( $(this).text() ) );
});

你可以删除这些空格,我只是为了清晰起见而把它们放进去。

答案 1 :(得分:0)

您可以使用html(),如下所示。

  

在匹配元素集中设置每个元素的HTML内容。

$('.tweetClass').html(function(index, oldHtml) {
    return replace(oldHtml);
});