【问题标题】:How do I use jQuery's .each() to replace text / regex?如何使用 jQuery 的 .each() 替换文本/正则表达式?
【发布时间】:2015-07-22 04:17:02
【问题描述】:

我这里有这段代码:

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。 为了解决这个问题,我想使用.each() 收集所有#tweet_textdiv,然后在循环通过时应用replace() 函数。

有人可以帮我做吗?

【问题讨论】:

  • 查看each的文档
  • 您想更改文本框的值或 div 的内容吗?

标签: javascript jquery html regex


【解决方案1】:
$('.your-tweet-class').each(function() {
    $(this).text( replace( $(this).text() ) );
});

你可以去掉空格,我只是为了清楚起见把它们放进去。

【讨论】:

  • 我最终使用了 .html() 因为我在回显 html 而不是文本。不过现在一切正常:)
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-03-16
    • 2017-10-18
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    相关资源
    最近更新 更多