0

div のコンテンツを保存し、一時的にお礼のメッセージを表示してから、div の元のコンテンツを元に戻そうとしています。いくつかの (おそらく、多くの) 理由で失敗しており、その理由がわかりません。私は何を間違えましたか?

$('#btn').on('click', function() {
    //store original content
    //appears to be a text string, rather than a jquery object
    var content = $('#container').html();
    console.log(content);
    $('#container').children().fadeOut(800, function() {
        $('#container').html('<div id="thanks">Thanks!</div>', function() {
            $('#thanks').fadeIn(800, function() {

                var t=setTimeout(function(){$('#container').html(content)},3000)

            });
        });
    });
});​

http://jsfiddle.net/gaZCW/

4

2 に答える 2

2

html関数は引数を 1 つだけ取ります。したがって、コールバックは呼び出されません。

ソースを確認して確認しました:

html: function( value ) {

あなたはこれを行うことができます:

$('#container').html('<div id="thanks">Thanks!</div>');
$('#thanks').fadeIn(800, function() {
     var t=setTimeout(function(){$('#container').html(content)},3000)
});
于 2012-10-29T16:33:39.780 に答える
0

HTML関数は同期的です...コールバックは必要ありません: http://jsfiddle.net/gaZCW/10/

$('#container').children().fadeOut(800, function() {
    $('#container').html('<div id="thanks">Thanks!</div>');
    $('#thanks').fadeIn(800, function() {
        $(this).delay(3000).fadeOut(800, function() {
            $('#container').html(content).children().hide().fadeIn(800);
        });
    });
});

また、delayこの場合、タイムアウトを設定するよりもクリーン (かつ簡潔) になります。

于 2012-10-29T16:40:19.277 に答える