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 に答える