Ответ 1
Вы удаляете исходное изображение здесь:
newImg.animate(css, SPEED, function() {
img.remove();
newImg.removeClass('morpher');
(callback || function() {})();
});
И все, что осталось, newImg
. Затем ссылка reset ссылается на изображение с помощью #rocket
:
$("#rocket").attr('src', ...
Но ваш newImg
не имеет атрибута id
, не говоря уже о id
of rocket
.
Чтобы исправить это, вам нужно удалить img
, а затем установить атрибут id
newImg
на rocket
:
newImg.animate(css, SPEED, function() {
var old_id = img.attr('id');
img.remove();
newImg.attr('id', old_id);
newImg.removeClass('morpher');
(callback || function() {})();
});
И тогда вы снова получите блестящую черную ракету: http://jsfiddle.net/ambiguous/W2K9D/
UPDATE. Лучшим подходом (как отметил mellamokb) было бы скрыть исходное изображение, а затем показать его снова, когда вы нажмете кнопку reset. Сначала измените действие reset на что-то вроде этого:
$("#resetlink").click(function(){
clearInterval(timerRocket);
$("#wrapper").css('top', '250px');
$('.throbber, .morpher').remove(); // Clear out the new stuff.
$("#rocket").show(); // Bring the original back.
});
И в функции newImg.load
возьмите исходный размер изображений:
var orig = {
width: img.width(),
height: img.height()
};
И, наконец, обратный вызов для завершения анимации морфинга становится следующим:
newImg.animate(css, SPEED, function() {
img.css(orig).hide();
(callback || function() {})();
});
Новые и улучшенные: http://jsfiddle.net/ambiguous/W2K9D/1/
Протекание $('.throbber, .morpher')
вне плагина - это не лучшая вещь, но это не большая проблема, если она документирована.