ajax - 部分 - parsehtml




jQueryでHTML文書の一部を抽出する (4)

$.ajaxメソッドのdataFilter()パラメータを調べることができます。 彼らはあなたが結果を出す前に操作を行うことができます。

jQuery.ajax

私はHTMLを返すページへのAJAX呼び出しを行い、HTMLの一部を抽出し(jQueryセレクタを使用して)、jQueryベースのJavaScriptでその部分を使用したいと思います。

AJAXの取得は非常に簡単です。 これにより、コールバック関数の "data"パラメータにHTMLドキュメント全体が表示されます。

私が理解していないことは、そのデータを役に立つ方法で処理する方法です。 私はそれを新しいjQueryオブジェクトにラップし、セレクタを使用してfind()を使って信じています)、必要な部分だけを取得したいと思います。 私はそれを持っている私は私の文書に挿入するために別のJavaScriptオブジェクトに渡すだろう。 (この委任は私が最初にjQuery.load()を使用していない理由です)。

私がすべて見るget()の例は、これにバリエーションがあるようです:

$('.result').html(data);

...私が正しく理解すると、返された文書全体が選択された要素に挿入されます。 それは疑わしいだけでなく(これは<head>などを挿入しないのですが)、私が望むものはあまりにも粗すぎます。

これを行う別の方法に関する提案は大歓迎です。


あなたは、 divを作成し、次にこのようなHTMLを置くことができます...

var div = $("<div>").html(data);

...このようなデータをフィルタリングします...

var content = $("#content", div.get(0));

...それを使ってください。

これは、要素を作成して任意のHTMLを入れると危険に思えるかもしれませんが、そうではありません。危険なもの( scriptタグなど)はドキュメントに挿入されたときにのみ実行されます 。 ここでは、データを要素に挿入しますが、その要素はドキュメントには入れられません。 ドキュメントにcontentを挿入するだけで何かが挿入されても、 content内のすべてが挿入されます。


新しい要素loadを使用し、それを関数に渡すことができます:

function handle(element){
  $(element).appendTo('body');
}

$(function(){
  var div = $('<div/>');
  div.load('/help a', function(){handle(div);});
});

例: http://jsbin.com/ubeyu/2 : http://jsbin.com/ubeyu/2


標準セレクタ構文を使用して、セレクタのコンテキストとしてdataを渡すことができます。 この場合の2番目のパラメータは、私たちのコンテキストです。

$.post("getstuff.php", function(data){
  var mainDiv = $("#mainDiv", data); // finds <div id='mainDiv'>...</div>
}, "html");

これは、以下を実行するのと同じです。

$(data).find("#mainDiv");

これを使用する方法によっては、URLとセレクターの両方で結果のデータをフィルタリングすることができるため、メソッドが呼び出された要素に直接渡されるため、 $.load()を使用する方がよいでしょう。に:

$("#mylocaldiv").load("getstuff.php #mainDiv");

これにより、 <div id='mainDiv'>...</div>の内容がローカルページ要素<div id='mylocaldiv'>...</div>getstuff.phpされます。





jquery