3

我想用 span 标签替换每个链接中的每个“新”。

这样对吗?

$("a:contains('New')").each(function () {
                 $(this).html($(this).html().replace("New", "<span class='new'>New</span>"));
        });
4

3 回答 3

7

正则表达式:工作演示 http://jsfiddle.net/WujTJ/

g = /g 修饰符确保所有出现的“替换”

i - /i 使正则表达式匹配不区分大小写。

一个很好的阅读:如果你喜欢:http ://www.regular-expressions.info/javascript.html

请试试这个:

希望这有帮助:)

另请注意,您可能不需要检查它是否包含New,因为如果需要,正则表达式会更改:

   // $("a:contains('New')").each(function () { // NOT sure if you need this
                     $(this).html($(this).html().replace(/New/g, "<span class='new'>New</span>"));
      //      });
于 2012-07-04T23:05:49.103 回答
4

你试过你的代码吗?
正如您在此处看到的,它运行良好,唯一的问题是您忘记使用g修饰符来替换所有"New"出现。

另一个问题是你不需要每个循环,因为你可以看到下面的代码做同样的事情。
不同之处在于不必循环并获取项目 html 两次

$("a:contains('New')").html(function(i, text) {
    return text.replace(/New/g, '<span class="new">New</span>');
});

演示

于 2012-07-04T23:33:12.207 回答
3

这也是一个非常简单的方法:

$("a:contains('New')").each(function() {
    $(this).html(function(index, text) {
        return text.replace('New', '<span class="new">New</span>');
    });
});

从这里开始:JavaScript/jQuery:替换部分字符串?

编辑:

Ricardo Lohmann的答案更好,杀死了 each() 函数:

$("a:contains('New')").html(function(i, text) {
    return text.replace(/New/g, '<span class="new">New</span>');
});
于 2012-07-04T23:14:03.077 回答