Проблема с порядком эффектов jQuery - PullRequest
1 голос
/ 09 мая 2011

Я бы хотел fadeOut кнопку, затем fadeIn ответ на Ajax-вызов.Ответ - новая кнопка.Однако следующий код выполняет fadeOut первую кнопку, затем ее затухание, а затем заменяет ее новой.Я попробовал несколько комбинаций, но не смог заставить его работать.где я ошибся?

beforeSend: function()
{
    $(this).fadeOut("slow");
},

success: function(response)
{
    $(this).fadeIn("slow", function () {
        $(this).parent().html(response);
    });
}

Ответы [ 3 ]

3 голосов
/ 09 мая 2011

this внутри вызова AJAX больше не является предыдущим элементом.Вы должны сохранить его в переменной, предшествующей вызову AJAX, например:

var button = $(this);

и позже:

button.fadeOut();

и т. Д.на.

1 голос
/ 09 мая 2011

$(this).parent().html(response); будет эффективно устранять this.Поэтому, изменив его на это, вы должны исправить это:

$(this).parent().html(response);
$("#thething").stop().fadeIn("slow");

, где #thething - идентификатор "этого"

РЕДАКТИРОВАТЬ: и то, что сказал Моргар.

1 голос
/ 09 мая 2011

Попробуйте это (обратите внимание на опечатку "show" на fadeOut):

beforeSend: function()
{
    $(this).fadeOut("slow");
},

success: function(response)
{
    $(this).parent().html(response);
    $(this).stop().fadeIn("slow");
}
...