2015-06-15 4 views
0

Как вы, возможно, знаете, что какой-либо код в window.resize заставит его выполнить для каждого пикселя, который пользователь перемещает в окне, в основном, из-за большого количества вызовов.Изменение размера flexlslider в конце изменения окна

Это означает, что flexslider изменяет размер для каждого пикселя, что замедляет работу браузера из-за сильного выполнения JS, а иногда и делает слайдер неустойчивым. Конечно, никто не сидит там, изменяя размер браузера весь день, но все равно много ненужного выполнения кода.

$(window).resize(function() { 
     var slider1 = $('#slider1').data('flexslider'); 
     slider1.resize(); 

}); 

Функция дребезга Подчеркивание хорошо работает для обнаружения конца изменения размера, однако он не работает с FlexSlider.

http://davidwalsh.name/function-debounce

$(window).resize(_.debounce(function(){ 

     console.log('resizing'); 
     var slider1 = $('#slider1').data('flexslider'); 
     slider1.resize(); 

}, 500)); 

можно увидеть в консоли он все еще вызывался сотни раз из-за slider.resize();

По существу, есть способ определить размер окна, а затем вызвать flexslider?

ответ

0

Я не знаком с функцией дребезга, но вы можете легко сделать это вручную, и вы будете иметь возможность изменять поведение

function doResize(){ 
    console.log('ended resizing'); 
    var slider1 = $('#slider1').data('flexslider'); 
    slider1.resize(); 
} 

var timeout; 

$(window).resize(function(){ 
    console.log('resizing'); 
    clearTimeout(timeout); 
    timeout = setTimeout(doResize, 100); // tweak this delay to best suit your needs 
}, 500)); 

Что это делает, что он очищает и устанавливает тайм-аут 100 мс при каждом событии изменения размера. Если другое событие изменения размера вызывается до 100 мс, тайм-аут сбрасывается на еще один дополнительный 100 мс и не срабатывает. Таким образом, только последнее событие изменения размера вызовет функцию doResize. Но имейте в виду, что «последнее событие изменения размера» считается тем, у которого нет событий изменения размера, называемых через 100 мс, по сути, отлаживая его.

Смежные вопросы