У меня есть ящик .child
. Я хочу, чтобы этот ящик прыгнул, а затем вернулся в исходное местоположение, когда нажата клавиша. У меня есть следующий сценарий:JQuery Анимация - Создание элемента отскока только один раз
$(document).on('keydown', function(e){
if (e.keyCode === 38) {
$('.child').animate({
'bottom' : '50px'
}, 250).animate({
'bottom' : '0px'
}, 250);
}
});
Теперь он заставляет элемент отскакивать при нажатии клавиши вверх. Но если я снова и снова нажимаю клавишу «вверх», он продолжает делать прыжок снова и снова даже после нажатия клавиши. Теперь я знаю о queue
поэтому я попытался следующее:
$(document).on('keydown', function(e){
if (e.keyCode === 38) {
$('.child').animate({
'bottom' : '50px'
}, {
duration: 250,
queue: false
}).animate({
'bottom' : '0px'
}, {
duration: 250,
queue: false
});
}
});
Но он не работает, как ожидалось либо. Затем я подумал добавить queue : false
ко второй анимации, но все же это не сработало. Может кто-нибудь, пожалуйста, скажите мне, как я могу заставить элемент прыгать один раз вместо повторных прыжков?
Fiddle здесь: http://jsfiddle.net/duwtbux0/
Извините, но я не могу воспроизвести вашу проблему (на FF 24). Коробка перескакивает ровно один раз за нажатие кнопки (она будет останавливать дальнейшие нажатия). Если я удерживаю кнопку, он будет считать все повторы и прыгать один раз для каждого. – nfechner
В этом его проблема, он не хочет стоять в очереди на кучу прыжков. http://jsfiddle.net/duwtbux0/2/ –
@CBauer Хм, я читал проблему по-другому: 'он продолжает делать прыжок в поле [...] даже после того, как ключ не нажимается' – nfechner