jQuery查找并替换忽略标记

时间:2016-09-01 00:34:45

标签: javascript jquery replace find

我用jQuery构建了一个find和replace函数。 (See functional example here)在您考虑格式化标记之前,它很有效。

假设以下html:

Here <i>is</i> my <b>sample</b> text

如果您搜索sample text,则由于粗体标记而导致搜索失败。

可接受的结果是删除<b>sample</b> text,将其替换为您为替换输入的内容。它应该单独留下斜体标签。怎么能实现呢?

这是我到目前为止所拥有的:

function findandreplace() {
  var text = $('.editor').html(),
      find = $('#find').val(),
      replace = $('#replace').val(),
      newText = text.replace(new RegExp(find, "g"), replace)
  $('.editor').html(newText);
}

1 个答案:

答案 0 :(得分:0)

您可以使用text()忽略标记并替换文本,但不能保留标记。这是你想要的吗?

function findandreplace() {
  var text = $('.editor').text(),
      find = $('#find').val(),
      replace = $('#replace').val(),
      newText = text.replace(new RegExp(find, "g"), replace)
  $('.editor').html(newText);
}

编辑:这个符合要求,但我们可以进一步推广/优化所需的标签。

function findandreplace() {
     var find = $('#find').val(),
         replace = $('#replace').val()

     $('.editor').find('b').contents().unwrap();
     var text = $('.editor').html();
     var newText = text.replace(new RegExp(find, "g"), replace)
     $('.editor').html(newText);
}