0

これは見つけやすいと思いました:)

$.get('/page.html', function(data) {
    //get only contents of class="contents"
});

私はそれを行う方法を見つけることができないようです。

4

3 に答える 3

2

私はこのようなことをします...

$.get('/page.html', function(data){
   var $page = $(data)
   var $contents = $page.filter('.contents'); /* this will get a reference to the .contents */
   /* do more stuff here 
      ....  
   */
});

この SO に対する受け入れられた回答をご覧ください: Get HTML of div element returned by .get with jQuery

.find()返されたコンテンツの構造が不明な場合 (子孫であるために使用する必要がある場合がある場合は.contents、常にチェックを実行して実行するか、.filter()またはその逆を行うことができます。

例:

$contents = $page.filter('.contents');
if($contents.length == 0) {
   $contents = $page.find('.contents');
}

他の回答に投稿されたコメントに基づいた単なる考えです。

于 2013-04-06T04:04:08.547 に答える
2

使用するだけ.find()です:

$(data).find(".contents")

使用できる最終的なコードは次のとおりです。

$.get('/page.html', function(data) {
    var contents = $(data).find(".contents");
});

次に、要素のタイプに応じて、または(ほとんどの要素)または(入力要素).contentsを使用できます。contents.html()contents.text()contents.val()

技術的には、別のアイデアは を使用すること.filter()です。

これはすべて、 の HTML の構造に依存しますdata。構造が次のような場合:

<div id="main">
    blah blah
    <div class="contents"></div>
</div>

の結果は$(data)になり[#main]、 を使用する必要がありますfind。あなたの構造が次のような場合:

<div id="main"><div>
<div class="contents"></div>
<div class="another"></div>

の結果は$(data)になり[#main, .contents, .another]、 を使用する必要がありますfilter

もちろん、それらを組み合わせると、次のようになります。

$.get('/page.html', function(data) {
    var all = $(data), contents;
    contents = all.filter(".contents");
    if (!contents.length) {
        contents = all.find(".contents");
    }
    if (contents.length) {
        // It/they was/were found at some point
    }
});
于 2013-04-06T04:01:00.597 に答える
2

返された から jQuery オブジェクトを作成dataし、jQuery セット内のラッパー要素が要素である場合、ターゲット要素の検索に失敗し、.contents要素が子孫要素である場合、メソッドはその要素の選択に失敗します。ダミー要素を作成し、返されたデータを入力してメソッドを使用できます。findcontentsfilterfind

$.get('/page.html', function(data) {
    var element = $('<div/>').html(data).find('.contents');
});
于 2013-04-06T04:08:10.857 に答える