Почему динамически созданный элемент не исчезает?

Я динамически создал элемент и хочу, чтобы он исчез через 2 секунды после задержки в Ajax success Перезвоните.

success: function(response){
    if(response == "success")
        $("#main").prepend("<div class='success'>...</div>");
    else
        $("#main").prepend("<div class='error'>"+response+"</div>");

    window.setTimeout(
        function(){
            $(".success, .error").fadeOut()
        }, 2000);
}

Но это не работает.

2 ответа

Поскольку мне не ясно, что еще может происходить до или после ваших методов Ajax, вы можете попробовать этот подход:

success: function(response){
    var resultDiv = $('<div />', { text: response });
    if(response == "success")
        resultDiv.addClass('success').prependTo('#main');
    else
        resultDiv.addClass('error').prependTo('#main');

    setTimeout(function(){resultDiv.fadeOut()}, 2000);
}

Я собрал сырой JSFiddle, который, кажется, доказывает, что это работает: http://jsfiddle.net/LA7xN/. Я, очевидно, не использовал реальный вызов Ajax, выбрав вместо этого просто передать значение для имитации ответа.

Я считаю, что вы можете просто позвонить

window.setTimeout(
    function(){
        $(".success, .error").fadeOut()
    }, 2000);

как это:

setTimeout('$(".success, .error").fadeOut()',2000);

может быть неправильно, хотя jsfiddles вниз, и я ленивый / собираюсь спать

Другие вопросы по тегам