У меня есть меню, которое скрыто в аккордеоне при просмотре на экранах размером менее 600 пикселей. На экранах размером более 600 пикселей меню видно.Accordion looping on resize
jsfiddle
- http://jsfiddle.net/ashatron/zbzqoz2f/
он работает нормально, но когда я изменить размер окна, чтобы быть больше, чем 600px, а затем вернуться к менее 600px затем нажмите вид карты сайта она петли анимации несколько раз.
Я думаю, что он запускает функцию для каждого события изменения размера, которое опрокидывает аккордеон, а затем зацикливает его. Но я не уверен, как лучше всего заказать синтаксис, чтобы заставить его работать.
Любая помощь будет оценена!
footernavmenufn = function() {
var current_width = $(window).width();
if (current_width < 600) {
$('.footer-accordion-head').show();
$('.footer-accordion-body').hide();
$('.footer-accordion-head').click(function() {
$(".footer-accordion-body").slideToggle('400');
// console.log('hmmm');
return false;
}).next().hide();
} else {
$('.footer-accordion-head').hide();
$('.footer-accordion-body').show();
}
};
$(document).ready(function() {
footernavmenufn();
});
$(window).resize(function(){
footernavmenufn();
//console.log('OMG-WHY-YOU-NO-WORK');
});
Каждый вызов '.click()' добавляет другой привязки. И ни один из них ни в какой момент не может быть несвязан. Таким образом, продолжая изменять размер окна, находясь под разрешением менее 600 пикселей, вы можете включить в себя 100 обработчиков, каждый из которых подготовлен для очереди еще один 'slideToggle()'. –