У меня есть подменю, которое слайды слева от экрана (слева: -662px) влево: 342px. Это срабатывает при нажатии на основной элемент меню.Остановить анимацию подменю на несколько кликов
Подменю отходит назад до -662px, если основное меню снова нажата. Моя проблема в том, что если основной элемент меню щелкнут быстро, элемент подменю продолжает перемещаться по странице 342px за раз. Он не двигается вперед и назад, как ожидалось.
Это происходит только во время анимации элементов - при нажатии на основной пункт меню после того, как подменю завершило анимацию, он возвращается к -662px, как следует.
Я попытался добавить .stop(), чтобы не повлиять. Кто-нибудь знает, как это исправить?
//IF IS SHOWN, HIDE
$("#menu ul li").click(function() {
$("#menu ul li ul").each(function() {
//GET SUBMENUS CURRENT POSITION
var sub2pos = $(this).css('left');
//IF MARGIN IS GREATER THE 340PX HIDE THE MENU
sub2pos = parseInt(sub2pos);
if(sub2pos > 340){
$(this).stop().animate({ left: '-=662px' }, 400);
}
});//END EACHFUNCTION
});//END 1st CLICK FUNCTION
//IF IS HIDDEN, SHOW
$("#menu ul li").click(function() {
//GET SUBMENUS CURRENT POSITION
var sub2pos = $(this).children('ul').css('left');
//IF MARGIN IS LESS THEN 342PX SHOW THE MENU
sub2pos = parseInt(sub2pos);
if(sub2pos < 342){
$(this).children('ul').delay(500).stop().animate({ left: '+=662px' }, 400);
}
});//END 2nd CLICK FUNCTION
EDIT: Я создал здесь скрипку. http://jsfiddle.net/q5Htx/19/ Обратите внимание, что происходит при нажатии на пункт меню быстро
Обратите внимание, что sub2pos <"342px" представляет собой сравнение строк, оно не делает то, что вы ожидаете. – Bemmu
@Bemmu, вы правы, и я исправил его, но моя первоначальная проблема все еще преобладает. – MeltingDog
вам нужно зарегистрировать sub2pos * console.log (sub2pos) * и посмотреть, что происходит в быстрой последовательности щелчков по родительскому :). –