2015-07-02 6 views
1

У меня есть эта функция и функция: stopPropagation(); не делает то, что мне нужно. Нет сообщения об ошибке, оно просто не работает, распространение происходит, когда вы нажимаете на элементы несколько раз.Мне нужно остановить анимацию между несколькими нажатиями

Обновление: Мне нужно остановить распространение, когда вы нажимаете элемент несколько раз, возможно, «распространение» не является правильным словом для этого.

Проблема и что мне нужно: При щелчке по элементу несколько раз анимация (скрыть и показать) происходит несколько раз. Мне нужно, чтобы это произошло только один раз

Это реальный код:

$('#block-menu-menu-men-gesto ul.menu > li a.parent').click(function(e) { 
    e.preventDefault(); 
    $('#block-menu-menu-men-gesto ul.menu ul:visible').hide("slow"); 
    $(this).parent().find('ul').show("slow"); 
    console.log('1111'); 
    e.stopPropagation(); 
}); 
+4

Просто не работает - объясните! Что должно произойти? Что происходит вместо этого? –

+0

@PraveenKumar. Проявления происходят, когда вы нажимаете на элементы несколько раз. – JPashs

+1

Почему вы используете stopPropagation для этого кода? –

ответ

5

при нажатии кнопки элемента несколько раз анимация (скрыть и показать) происходит несколько раз. Мне нужно, чтобы это произошло всего один раз

Для этого вы можете использовать stop(), чтобы очистить все очереди в очереди до начала следующего. Попробуйте это:

$('#block-menu-menu-men-gesto ul.menu > li a.parent').click(function(e) { 
    e.preventDefault(); 
    $('#block-menu-menu-men-gesto ul.menu ul:visible').stop().hide("slow"); 
    $(this).parent().find('ul').stop().show("slow"); 
}); 

stopPropagation используется, чтобы предотвратить событие кипящего вверх DOM, которая не имеет отношения к вашему вопросу.

+0

только то, что мне нужно. – JPashs