Задержка JQuery перед fadeOut

Я написал jquery script, который позволяет мне затухать divs и выходить, а затем повторять. Код работает нормально. Однако, когда я пытаюсь добавить задержку (я хочу, чтобы div оставался на несколько секунд до исчезновения), он работает неправильно. Я попытался добавить задержку в нескольких местах внутри кода, и никто не работает должным образом. Я использую JQuery версии 1.9.1

Вот script, который я написал:

$(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);
}

Ответ 1

Вы можете просто написать

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

Ответ 2

Вы пробовали .delay()? что-то вроде:

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

Ответ 3

Я думаю, что проблема в том, что вам нужно передать функцию в качестве первого параметра, и вы передаете строку. Попробуйте заменить строку setTimeout() следующим образом:

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

Источник: http://www.w3schools.com/jsref/met_win_settimeout.asp

Ответ 4

попробуйте это

$(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++;
}