jQuery fadeOut, заменить на, анимация почти работает - PullRequest
4 голосов
/ 17 марта 2010

Я пытаюсь сделать следующее: 1. При нажатии, у вас есть div с id = "fader" fadeout 2. замените HTML фейдера новым html (этот новый HTML будет отображаться ниже сгиба браузера) 3. Анимируйте новый HTML, чтобы перейти к указанному месту

Шаг 1 и 2 работают, шаг 3 - нет, и я озадачен, почему.

Вот код JavaScript:

$("#fader").fadeOut(1000, function() {
  $(this).replaceWith('<div id=\"fader\" style=\"margin-top:-500px;width:500px;height:400px;border:1px solid black;\">new div</div>', function() {
    $("#fader").animate({marginTop: "500px"});
  });
});

Будем очень благодарны за любые мысли о том, почему div не оживляет, заранее спасибо!

1 Ответ

5 голосов
/ 17 марта 2010

В вашем случае .replaceWith () не имеет обратного вызова, имеет другую подпись, чем анимация.

Попробуйте вместо этого:

$("#fader").fadeOut(1000, function() {
  $(this).replaceWith('<div id="fader" style="margin-top:-500px;width:500px;height:400px;border:1px solid black;">new div</div>');
  $("#fader").animate({marginTop: "500px"});
});

Обратите внимание, что вы не можете связать это, .replaceWith() возвращает оригинальный объект, а не тот, который вы только что создали.

...