2015-03-03 1 views
1

Я работаю над сайтом, который имеет много анимации, слайд-шоу, слайд-шоу и т. Д. Существует одна секция, которая изменяется на («прокрутка»), но поэтому мне всегда нужна функция offset(). Top и height() этого раздела ... ну, это непросто, потому что разделы, указанные выше, часто меняют их высоту(). Таким образом, вместо запуска мою Resize-функцию каждый раз, когда вышеуказанные разделы меняются - LIKE:Хорошая идея проверить изменения в значении каждые XX месяцев в JS?

{ 
    …  
    $(window).trigger('resize.mysection') 
    … 
} 

... Я думал, что это может быть легче обновлять меняется каждые XX мс ... как:

function update_val() 
{ 
    if ($('#mysection').offset().top != old_top) 
    { 
     old_top = $('#mysection').offset().top; 
     $(window).trigger('resize.mysection'); 
    } 

    //in order to save a small amount of power I would use animationframe instead of timeout 
    requestAnimationFrame(update_val); 
} 

Что делать вы, ребята, думаете? За и против? Плохо ли часто выполнять эту небольшую функцию?

THX!

ответ

0

Я думаю, что хорошим решением является использование метода watch ... click here for definition.

вы можете использовать его как это:

$('#mysection').offset().watch('top', function (key, oldValue, newValue) { 
    // the argument (key) has the value 'top' 
    if(oldValue != newValue) { 
     $(window).trigger('resize.mysection'); 
    } 
} 

Я не проверял, но этот код может дать вам представление о том, как использовать это решение

+0

хорошо, что звучит очень интересно, но я не могу заставить его работать ... вы бы попробовали jsfiddle? здесь моя: https://jsfiddle.net/y8zeddwy/ –