使用jquery替换函数时无法创建超链接

时间:2017-09-29 05:39:10

标签: javascript jquery html hyperlink

我正在尝试在页面上查找文本(句子),然后用新文本替换它。如果要替换的文本只是文本,下面的代码可以正常工作。但是我还想在新文本中包含一个超链接。

原始文字:您似乎已进入此调查。 新文字:似乎有人有XYZ,要回到您的PP帐户,请使用以下网址:www.xyz.com

以下是我正在使用的代码示例

$ ("*").contents().each(function() {
if(this.nodeType == 3)
    this.nodeValue = this.nodeValue.replace("Old text", "Please click this link");
});

如果我尝试将超链接标记添加到上面的文本""请单击此链接",它不会创建超链接,而是将其显示为带有html标记的文本

1 个答案:

答案 0 :(得分:0)

  

但我还想在新文本中加入超链接。

首先清除现有的nodeValue

this.nodeValue = "";

现在创建一个新的元素

var aNode = document.createElement("a");
aNode.setAttribute( "href", "#" );
aNode.innerText =  "Please click this link";

现在在aNode节点

的nextSibling之前插入this
var nextNode = this.nextSibling;
var parentNode = this.parentNode;
parentNode.insertBefore( aNode, nextNode );

<强>样本

&#13;
&#13;
$("*").contents().each(function() {
  if (this.nodeType == 3 && this.nodeValue.indexOf("Old text") > -1) {
    this.nodeValue = "";

    var aNode = document.createElement("a");
    aNode.setAttribute("href", "#");
    aNode.innerText = "Please click this link";

    var nextNode = this.nextSibling;
    var parentNode = this.parentNode;
    parentNode.insertBefore(aNode, nextNode);
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parentDiv">
  <div>prev text</div>
  Old text
</div>
&#13;
&#13;
&#13;