2013-12-13 4 views
0

У меня возникли проблемы с тем, чтобы этот запуск выполнялся один раз, я не уверен, что я делаю неправильно, так как раньше я добавил, что эффект высоты прокрутки отлично работал.Javascript работает не один раз, когда он не предназначен для

$(window).scroll(function() { 
    var y_scroll_pos = window.pageYOffset; 
    var scroll_pos_test = 450; 

if(y_scroll_pos > scroll_pos_test) { 


$('#coins').lazylinepainter( 
{ 
    "svgData": pathObj, 
    "strokeWidth": 4, 
    "strokeColor": "#8E9CCD" 
}).lazylinepainter('paint'); 

} 
+5

Возможно, это потому, что событие прокрутки срабатывает несколько раз? –

+2

, когда вы прокручиваете событие прокрутки, будет срабатывать куча времени. – DrCord

+1

Событие 'scroll' запускается много раз, пока вы прокручиваете. Вы хотите либо дебютировать, либо дросселировать его: http://benalman.com/projects/jquery-throttle-debounce-plugin/ –

ответ

1

Резига есть запись в блоге, описывающую, как правильно работать с событием прокрутки увольняет несколько раз: http://ejohn.org/blog/learning-from-twitter/

Короче говоря, Вы должны периодически проверять ли не прокручивается пользователь и выполнить код если бы они это сделали. Ваш код должен выглядеть примерно так:

var outerPane = $details.find(".details-pane-outer"), 
    didScroll = false; 

$(window).scroll(function() { 
    didScroll = true; 
}); 

setInterval(function() { 
    if (didScroll) { 
     didScroll = false; 
     // Check your page position and then 
     // Load in more results 
    } 
}, 250); 
Смежные вопросы