我如何在javascript中调用函数,然后在滚动事件上调用该函数的特定实例?

时间:2015-04-01 23:14:23

标签: javascript jquery function

我想运行一个函数(scrollSprite),在加载时运行for循环,用一堆if语句“填充”自身。然后在滚动事件后我想调用这个特定的“填充”或“构建”功能。我知道如何在滚动上调用一个函数,我的问题是具体的,我不知道如何调用该函数的特定实例。

见下面的代码:

var scrollSprite = function(distance, frames, frameSize, scrollInterval){

                minScroll = 0;
                maxScroll = -scrollInterval;
                for (i = 0; i < frames; i++){
                    if(distance < minScroll && distance >= maxScroll){
                        $('#sprite').css("top", -scrollInterval);
                    }
                    minScroll = maxScroll;
                    maxScroll -= scrollInterval; 
                }
}

window.addEventListener("scroll", function(e){

    if($('#finding-finders').hasClass('active')){

        var scrollTop     = $(window).scrollTop(),
            elementOffset = $('#finding-finders').offset().top;
            distance      = (elementOffset - scrollTop);

        //if the the element has reached the window then run instance of scrollSprite
        if(distance < 0){
            scrollSprite(distance, 10, 300, 20);
        }
    }
}

任何方向都将不胜感激!谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用立即调用的函数表达式(IIFE)。 见这个例子:

var scrollFn = (function() {
  // code here to do something immediately

  // return a new function
  return function(event) {
    // code here to run when scrolling
  };

})(); // immediately invoke function

window.addEventListener('scroll', scrollFn);