最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How do I use jQuery's .each() to replace textregex? - Stack Overflow

programmeradmin3浏览0评论

I have this code right here:

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

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

It gets text from a text element, and highlights the mentions and URLS to make them clickable. Here is the replace() code:

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>';
    });
}

I have a long list of divs / tweets, and when I run replace() it only applies the pattern matching function to one div. To get around this, I thought of collecting all of the #tweet_textdivs using .each(), and then applying the replace() function once it loops through.

Could somebody help me do that please?

I have this code right here:

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

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

It gets text from a text element, and highlights the mentions and URLS to make them clickable. Here is the replace() code:

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>';
    });
}

I have a long list of divs / tweets, and when I run replace() it only applies the pattern matching function to one div. To get around this, I thought of collecting all of the #tweet_textdivs using .each(), and then applying the replace() function once it loops through.

Could somebody help me do that please?

Share Improve this question edited Jul 22, 2015 at 5:16 Tushar 87.3k21 gold badges163 silver badges181 bronze badges asked Jul 22, 2015 at 4:17 user3776241user3776241 5439 silver badges21 bronze badges 2
  • see the doc for each – Bhojendra Rauniyar Commented Jul 22, 2015 at 4:19
  • You want to change value of text box or content of the div? – Mitul Commented Jul 22, 2015 at 4:31
Add a ment  | 

2 Answers 2

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

You can remove the spaces, I just put them in for clarity.

You can use html() as follow.

Set the HTML contents of each element in the set of matched elements.

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

评论列表(0)

  1. 暂无评论