jQuery attr() изменить img src
Я делаю некоторый эффект запуска ракеты jQuery. Когда я нажимаю на Rocket, он поменяется с другим изображением ракеты, а затем запустится. Когда я нажимаю ссылку "сброс", ракета должна сбросить начальное местоположение, и изображение должно вернуться назад. Но есть две проблемы. Во-первых, "мой образ ракеты не возвращается назад". Во - вторых-после того, как он вернется в исходное положение, если я снова нажму на Rocket, он не запускается. Ты видишь и находишь меня? решения?
http://jsfiddle.net/thisizmonster/QQRsW/
$("#resetlink").click(function(){
    clearInterval(timerRocket);
    $("#wrapper").css('top', '250px');
    $("#rocket").attr('src', 'http://www.kidostore.com/images/uploads/P-SAM-rocket-blk.jpg');
});
вы можете увидеть $("ракета").строка attr ().
2 ответов
вы удалите исходное изображение здесь:
newImg.animate(css, SPEED, function() {
    img.remove();
    newImg.removeClass('morpher');
    (callback || function() {})();
});
и все, что осталось позади newImg. Затем вы сбрасываете ссылки ссылки на изображение с помощью #rocket:
$("#rocket").attr('src', ...
но ваш newImg нет id атрибут не говоря уже о id of rocket.
чтобы исправить это, вам нужно удалить img и выберите  на newImg to 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/
обновление: лучшим подходом (как отметил mellamokb) было бы скрыть исходное изображение, а затем показать его снова, когда вы нажмете кнопку сброса. Во-первых, измените действие 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') за пределами плагина не самая лучшая вещь, но это не имеет большого значения, пока она документирована.
- 
функции imageMorphсоздаст новый элемент img, поэтому идентификатор будет удален. Изменено на$("#wrapper > img") 
- вы должны использовать функцию live () для события щелчка, если вы хотите, чтобы вы снова запустили ракету. 
обновленная демонстрация:http://jsfiddle.net/ynhat/QQRsW/4/
