Запустите функцию jQuery 5 раз после изменения размера
Можно ли запустить функцию только 5 раз после изменения размера окна? При изменении размера снова запустите функцию 5 раз.
$(window).bind('resize', function() {
setTimeout(function(){
var slider = $('.wrapper .flexslider').data('flexslider');
slider.resize();
}, 500);
});
Эта функция работает каждые 0,5 сек. но браузер не может справиться с этим, и однократного запуска этой функции недостаточно для правильного изменения размера flexslider (я не знаю почему).
2 ответа
Да. Добавьте обратный вызов в вашу функцию и вызывайте его снова, рекурсивно, столько раз, сколько необходимо.
Вот пример функции debounce, упомянутой в комментариях.
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
var myEfficientFn = debounce( function() {
// Your resize code here, only fired once
}, 500);
window.addEventListener('resize', myEfficientFn);