【问题标题】:Javascript/jquery replace text removes formatting of divJavascript/jquery 替换文本删除 div 的格式
【发布时间】:2013-09-25 08:04:29
【问题描述】:

http://jsfiddle.net/2EvGF/

JS

$('.msgln').each(function() {
    var text = $(this).text();
    $(this).text(text.replace('Admin', 'sys-admin')); 
});

HTML

<div class='msgln'><b>Admin</b>:<i> Chat cleared</i><br></div>

替换类“.msgln”会删除格式(粗体、斜体等)我该如何解决这个问题?

【问题讨论】:

  • 为什么要删除类msgln

标签: javascript jquery html replace


【解决方案1】:

这可能是因为 bold, italcs etc 的 css 规则可能是为 msgln 类定义的,所以一旦类被删除,相关的 css 规则也将被删除。

一个解决方案是添加另一个定义相同css规则的类

【讨论】:

    【解决方案2】:

    正如这里所说,http://api.jquery.com/text/#text2,它将整个内部 html 替换为给定的文本。

    您需要深入到包含要替换的文本的元素。在您的情况下,它将是 .msgln b

    $('.msgln b').each(function() {
        var text = $(this).text();
        $(this).text(text.replace('Admin', 'sys-admin')); 
    });
    

    【讨论】:

      【解决方案3】:

      我同意 sincebasic 的解决方案。这是我的版本,几乎没有更新,因为您可以在 HTML 的其他部分显示带有“msgln”类的标签。下面的呢?

      HTML

      <div class='msgln'><b><span class="username">Admin</span></b>:<i> Chat cleared</i><br></div>
      

      JS

      $('.msgln span.username').each(function() {
          var text = $(this).text();
          $(this).text(text.replace('Admin', 'sys-admin')); 
      });
      

      【讨论】: