2

div を先頭に追加して AJAX でコンテンツをロードしようとしていますが、div は空のままです

$('#primary').fadeOut('slow', function(){
        $('#primary').prepend('<div id="content"/>', function(){
            $('#content').load(link+' #content', function(){
                $('#primary').fadeIn('slow');
            });
        });
    });
4

3 に答える 3

2

この.prependメソッドは非同期ではないため、コールバックを受け取りません。

関数を最初の引数として渡すことはできますが、1つの要素のみの前に追加する場合ほど便利ではありません。

これが修正されたコードです。

$('#primary').fadeOut('slow', function(){
    var content = $('<div id="content"/>'),
        primary = $(this);
    primary.prepend( content );
    content.load(link + ' #content', function(){
        primary.fadeIn('slow');
    });
});
于 2012-02-18T04:02:42.463 に答える
0

prependコールバックはありません、それは即時の変更です。これを試して:

$('#primary').fadeOut('slow', function(){
    $('<div id="content"/>').prependTo('#primary')
         .load(link+' #content', function(){
            $('#primary').fadeIn('slow');
        });
});
于 2012-02-18T04:05:02.930 に答える
0

次のようなものを試してください。

$('#primary').fadeOut('slow', function(){
    var primary = this;
    $('<div id="content"/>')
        .prependTo(primary)
        .load(link+' #content', function(){
            $(primary).fadeIn('slow');
        });
    });
});

.prepend()メソッドはコールバックを受け取りません。代わりに使用.prependTo()しました(これもコールバックを取りません)。これは、コンテキストを保持するため、.load()呼び出しを連鎖させることができるためです。

于 2012-02-18T04:07:22.413 に答える