【问题标题】:How to replace more than once?如何多次更换?
【发布时间】:2011-04-27 15:22:32
【问题描述】:

这是我目前的代码:

$("h1.intro:contains('|')").each(function() {
    $(this).html($(this).html().replace('|','</span><br /><span>')) 
});

这仅适用于一次,但它必须适用于所有这些“|”...

有什么想法吗?

【问题讨论】:

  • 请注意,replace() 是一个 javascript 调用,不是 jQuery 的一部分

标签: javascript jquery text replace


【解决方案1】:

如果您使用的是 jQuery 1.4,则可以使用 .html(function)) 签名更好地做到这一点:

$("h1.intro:contains('|')").each(function() {
    $(this).html(function(idx, oldContent) {
        return oldContent.replace(/\|/g, '</span><br /><span>');
    });
});

这意味着您不必创建第二个 jQuery 实例,并且性能应该更好。

【讨论】:

  • +1:有用;我以前不知道 .html() 的这种调用。好电话!
【解决方案2】:

添加/g修饰符:

$("h1.intro:contains('|')").each(function() {
    $(this).html($(this).html().replace(/\|/g, '</span><br /><span>'));
});

更多信息:

g 修饰符用于执行 全局匹配(查找所有匹配而不是 而不是在第一场比赛后停止)。

【讨论】:

  • “更正确”有效!我必须学习正则表达式,谢谢队友。
【解决方案3】:

您好,通过在“|”之后添加“/g”来为您的正则表达式添加修饰符

$("h1.intro:contains('|')").each(function() {
    $(this).html($(this).html().replace("|/g",'</span><br /><span>')) 
});

【讨论】:

  • 您需要使用正则表达式文字。 JavaScript 不会即时将字符串转换为正则表达式。
猜你喜欢
  • 2021-12-12
  • 2021-01-24
  • 2014-11-22
  • 2016-11-01
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 2022-11-14
  • 2022-01-26
相关资源
最近更新 更多