用jQuery替换文本

时间:2016-03-17 12:42:28

标签: jquery

我的页面上有“可丽耐”字样。在很多时候。

我必须用Corain @reg替换它; (获得注册商标)

我尝试了jQuery("Corian®").replaceAll("Corian");,但它无法正常工作。

我应该尝试什么

5 个答案:

答案 0 :(得分:1)

希望这能解决您的问题。

$("span, p, div").each(function() {
    var text = $(this).html();
    text = text.replace("Corian", "Corian®");
    $(this).html(text);
});

JSFiddle

答案 1 :(得分:0)

首先获取html使用替换为/ text / g并再次将html指定给body。在呈现®

之后,也可以使用&REG代替®

<强> Live Demo

html = $("body").html().replace(/Corian®/g, 'Corian');
$('body').html(html);

答案 2 :(得分:0)

您可以循环遍历body元素的所有子元素并使用简单的正则表达式替换:

$("body").children().each(function() {           
    $(this).html().replace( /Corian/g, "Corian&REG;");
});

答案 3 :(得分:0)

所以这是一个解决方案,它枚举文档的文本节点并替换文本。

我这样做的原因是,如果你交换整个HTML,你将丢失文档中的所有绑定事件和数据 - 因为你实质上是在替换整个文档 - 打破一切。

免费小提琴:https://jsfiddle.net/x51uzqfw/2/

  

重要提示 提供的JavaScript不在<body>。它必须位于外部文件中,因为替换方法将替换“可丽耐”字样。也在JavaScript中。

JS

$('button').on('click', function() {
  alert('event');
});

function unescapeHtml(value) {
  var temp = document.createElement("div");
  temp.innerHTML = value;
  var result = temp.childNodes[0].nodeValue;
  temp.removeChild(temp.firstChild);
  return result;
}

function recurseReplace(parentNode) {
  var count = parentNode.childNodes.length;
  for (var i = 0; i < count; i++) {
    var node = parentNode.childNodes[i];
    if (node.nodeType == Node.TEXT_NODE) {
      node.nodeValue = node.nodeValue.replace('Corian', unescapeHtml('Corian &reg;'))
    }
    recurseReplace(node);
  }
}

recurseReplace(document);

HTML

Corian
<div>
  <button type="button">
    I have an event! Corian
  </button>
  <div>Corian</div>
  <div>Corian</div>
  <div>Corian
    <div>Corian</div>
  </div>
</div>
Corian

修改
我做了一个更改,因为我意识到这没有考虑<body>根目录中的文本节点。

答案 4 :(得分:-1)

首先,您必须通过选择器进行选择(在您的情况下,您已尝试使用不是jquery选择器的Corian®)。

$("body").html(($("body").html().replace('Corian', 'Corian&REG;'));

获取body的所有html并用jquery replace函数替换它。

demo