我遇到了很多问题,基本上我有一个从服务器(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>"
答案 0 :(得分: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();