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/