0

我对此有很多问题,基本上我有一个从服务器(Ajax)收到的字符串。这个字符串可能有也可能没有锚链接。它也可能有很多。我需要取这个字符串,找到所有的锚链接,更改href,然后在屏幕上输出结果。为此,我有以下我认为可以工作的代码。这与我到目前为止所获得的一样接近:

  result.origText = "some random text <a href=\"http://www.abc.com\">random link</a>"

经过大量的试验和错误,我终于想出了以下代码:

  var origText = $(result.origText);                            
  origText.filter("a").each(function () {
      var href = $(this).attr("href");
      $(this).attr("href", href + '#ref=' + Num); //Num is currently = 12345
  });
  finalText = origText[0].outerHTML;

finalText然后包含:

  <a href="http://www.dermapoise.com#ref=12345">random link</a>

而且我丢失了所有其他未包含在任何标签中的文本。我该如何存档?

更新:以下输入字符串是可能的:

  "some random text <a href=\"http://www.abc.com\">random link</a> some more text <a href=\"http://www.abc2.com\">random link2</a> Even more text <a href=\"http://www.abc.com\">random link3 with the same href</a>" 
4

1 回答 1

2

这是因为当 jQuery 尝试解析给定的文本时,它会尝试将其解析为选择器,而不是 html 内容 - 它会引发错误Uncaught Error: Syntax error, unrecognized expression: some random text <a href="http://www.abc.com">random link</a>

由于在顶层您有文本节点,最好将另一个容器包裹在它周围,然后根据需要修改内容,然后获取容器的内部内容

var origText = $('<div />').html(result.origText);
origText.find("a").attr('href', function (idx, href) {
    return href + '#ref=' + Num
});
finalText = origText.html();
于 2013-11-01T00:50:20.480 回答