0

ユーザーが私のブログの並べ替えリンクをクリックしたときに、AJAXを使用して新しい投稿を取得し、並べ替えリンクセクションを更新したいと思います。これはRJSを使用すると簡単ですが、JSを目立たなくし、データのみ(コードなし)でAJAXリクエストに応答したいと思います。

これが私が今していることです:

  $('a.order_by').livequery('click', function() {
    $.get(this.href, null, function(data) {
      // The server returns a blob of HTML with a div#posts
      // and a div#sorting
      $("#posts").partial_html(data, "#posts");
      $("#sorting").partial_html(data, "#sorting");
    });
    return false;
  });

そしてここにpartial_html()機能があります:

// Stolen from the jQuery source for $.load()
jQuery.fn.partial_html = function(data, selector) {
    $(this).html($("<div/>").append(data.replace(/<script(.|\s)*?\/script>/g, "")).find(selector));
}

明らかに、これは少し嫌です-これを行う正しい方法は何ですか?(2つを使用するのは非常に簡単$.load()ですが、余分なHTTPリクエストが必要になります)。

4

3 に答える 3

1
  $("#posts").html($(data).filter("#posts").html());
  $("#sorting").html($(data).filter("#sorting").html());

私のために働きます。(それが「正しい」方法かどうかはわかりませんが)。

于 2009-05-12T03:19:21.080 に答える
0

を使用して返されたデータを変数に格納し(キャッシュを考えて$.load()ください)、jQueryを使用してそのキャッシュからdivを選択し、を使用してDOMに追加します。$.html()

于 2009-05-12T01:55:58.483 に答える
0

これは私の質問Railsと関係があると思います。残り火ではなく、JSの応答ではなく、私が投稿したばかりの中間の何かです。適切な解決策を見つけることができるかどうか見てみましょう。

于 2012-10-30T11:11:28.020 に答える