2

ajaxでロードされたファイルをループしたいのですが、ループしません。いくつか試してみましたが、動作しません。

// jquery

$.ajax({
    url: 'file.html',
    type: "GET",
    dataType: "html",
    success: function(data) {

        $(data).find('div').each(function(i){
            alert('found')
        });

    },
    error: function(){
        alert('oeps...')
    }                           
});

// file.html

<div>
// content goes here
</div>

<div>
// content goes here
</div>

<div>
// content goes here
</div>

...


...    
4

5 に答える 5

2

.findに変更する必要があります.filter。これは、 がすべての要素の.findの子孫を検索するためですが、html ファイルは単にs であるため、それらを見つけるために を使用する必要があります。<div>.filter

デモ: http://jsfiddle.net/zuPVp/

于 2012-05-14T19:29:25.470 に答える
1

htmlデータ型として指定する必要はありません。必要ありません。

SO、次の行を削除します。

dataType: "html"
于 2012-05-14T19:20:51.810 に答える
1

機能しない理由は、.findがデータ内の子孫を検索するためです。これらの div はすべてルートにあります。

空の div を作成し、その div の html をデータに設定できます。これにより、divが子孫になるため、findが確実に機能します。

$.ajax({
    url: 'file.html',
    type: "GET"
    success: function(data) {
        $('<div/>').html(data).each(function(index, item) {
            console.log(item);
        });
    },
    error: function(){
        console.log('error')
    }                           
});

または、フィルターを使用することもできます。

$.ajax({
        url: 'file.html',
        type: "GET"
        success: function(data) {
            $(data).filter('div').each(function(index, item) {
                console.log(item);
            });
        },
        error: function(){
            console.log('error')
        }                           
    });
于 2012-05-14T19:34:08.660 に答える
0

この場合、検索している HTML に子ノード.find()が含まれていないため、 は機能しません。divこれを修正するには、まずアイテムをコンテナに追加してから を使用します.find()

http://jsfiddle.net/jbabey/hvkw9/1/

var html = $('<div>first div</div><br /><div>second div</div>');

// 0, no child divs in html
console.log(html.find('div').length);
// 2, now the divs in html are children of an intermediate div
console.log($('<div>').append(html).find('div').length);
于 2012-05-14T19:36:56.557 に答える
0

あなたが何をしようとしているのかを知るのは難しいですが、私はそれがこれだと推測しています:

$.ajax({
    url: 'file.html',
    type: "GET"
    success: function(data) {
        $.each($('div', data.outerHTML), function(index, item) {
            console.log(item);
        });
    },
    error: function(){
        console.log('error')
    }                           
});
于 2012-05-14T19:21:40.650 に答える