2016-10-19 3 views
0

Проблема, с которой я сталкиваюсь, заключается в том, что когда я нажимаю на #apple1 несколько раз, панель аккордеона i.e. 0: appleInfo1 перемещается вверх и вниз до тех пор, пока она не сравняется с тем, сколько раз я изначально нажал кнопку.JQuery - Многочисленные щелчки, вызывающие проблемы

$('#appleInfo1').hide().promise().done(function(){ 
    $('#apple1').click(function(){ 
     $('#appleInfo1').slideToggle(1000); 
     $('#intelInfo1, #ibmInfo1, #amdInfo1').slideUp(1000); 
    }); 
}); 
+0

Как и в сторону, рекомендуется использовать класс, а не 3 ID селекторов. –

+0

Кроме того, я бы рассмотрел возможность использования javascript только для переключения класса, а также стиля и анимации позиции с переходами CSS - это лучшее разделение проблем. –

ответ

1

Вы должны stop() любой текущей анимации при нажатии кнопки снова.
Кроме того, обещание не имеет никакого смысла, если не проходит в период с hide()

var apple = $('#appleInfo1').hide() 

$('#apple1').click(function(){ 
    apple.stop(true,true).slideToggle(1000); 
    $('#intelInfo1, #ibmInfo1, #amdInfo1').stop(true,true).slideUp(1000); 
}); 
Смежные вопросы