web-dev-qa-db-ja.com

fadeOut前のjQueryの遅延

私はdivをフェードインおよびフェードアウトしてから繰り返すことができるjqueryスクリプトを作成しました。コードは正常に動作します。ただし、遅延を追加しようとすると(divがフェードアウトする前に数秒待機したい)、正しく機能しません。コード内のいくつかの場所に遅延を追加しようとしましたが、どれも正しく機能していないようです。 Jqueryバージョン1.9.1を使用しています

これが私が書いたスクリプトです:

$(document).ready(function(){
   ShowPostDiv(0);
});

function ShowPostDiv(divIndex)
{
    $(".home_entry_txt").hide();

    if(divIndex >= $(".rotate_hide").length)
    {
        divIndex = 0;
    }
    var divPostHtml = $(".rotate_hide:eq("+divIndex+")").html();
    $(".home_entry_txt").html(divPostHtml); 
    $(".home_entry_txt").fadeIn(3000, function(){
             $(".home_entry_txt").fadeOut("slow");
        });
    divIndex++;
    setTimeout("ShowPostDiv("+divIndex+")", 4000);
}
20
user2220474

あなただけ書くことができます

$(".home_entry_txt").fadeIn(3000).delay(1000).fadeOut("slow");
36
enb081

これを試して

$(document).ready(function(){
   ShowPostDiv(0);
});

function ShowPostDiv(divIndex)
{
    $(".home_entry_txt").hide();

    if(divIndex >= $(".rotate_hide").length)
    {
        divIndex = 0;
    }
    var divPostHtml = $(".rotate_hide:eq("+divIndex+")").html();
    $(".home_entry_txt").html(divPostHtml); 
    $(".home_entry_txt").fadeIn(3000, function(){
        setTimeout(function(){
            $(".home_entry_txt").fadeOut("slow");
        },4000);
    });
    divIndex++;
}
3
iAmClownShoe

.delay()を試しましたか?何かのようなもの:

$(".home_entry_txt").fadeIn().delay(200).queue(function(next) {
$(".home_entry_txt").fadeOut("slow");
});
3
kelly johnson

問題は、最初のパラメーターとして関数を渡す必要があり、文字列を渡すことだと思います。 setTimeout()行を次のように置き換えてみてください:

setTimeout(function(){
    ShowPostDiv(divIndex);
}, 4000);

ソース:http://www.w3schools.com/jsref/met_win_settimeout.asp

1
Bill