2013-05-31 19 views
1

我试图使用jQuery插件within viewport来检测元素是否在视口中。如果元素完全位于视口中,则执行函数(实时)

它可以工作,但不会更新。

他推荐ScrollStop。我添加它,但它不起作用。

我只是把我的代码在这里:

$(document).ready(function() { 
    $(window).bind("resize scrollStop", function() { 
$("div").withinViewport().append("<span>hi</span>"); 
}); 
}); 

(加,它使用的绑定方法,所以这是一个有点过时..)

因此,它可能是简单的,但我没有”让它工作。

我是新来的jQuery和JavaScript所以..它可能超级简单。

Here's the website with the code and everything

编辑:适用于调整大小!但不能滚动。

+0

不错的图形:D – Hogan

+0

@Hogan aha,非常感谢你:) – Naemy

回答

2

从这里

jQuery - bind event on Scroll Stop

$.fn.scrollStopped = function(callback) {   
     $(this).scroll(function(){ 
      var self = this, $this = $(self); 
      if ($this.data('scrollTimeout')) { 
       clearTimeout($this.data('scrollTimeout')); 
      } 
      $this.data('scrollTimeout', setTimeout(callback,250,self)); 
     }); 
    }; 

$(window).scrollStopped(function(){ 
    $("div").withinViewport().append("<span>hi</span>"); 
}); 

如何工作的。

该功能首先清除与数据元素scrollTimeout相关的任何超时。

它想用250毫秒,在传递的函数超时创建新的元素出现。

因此,当滚动移动它总是从运行和重置它在一点点运行”清除功能”。

当滚动停止 - 那么它不能清除函数,所以函数执行。

可爱的把戏。

+0

不知道它是如何工作的完全。我将在后面更深入的工作,但我测试了它,它的工作原理,所以谢谢!从几个小时的代码和废话中完全拯救了我。谢谢。 – Naemy

+0

尽管目前的代码有一个缺点:你不能用它绑定多个元素到一个元素。我编辑了自己的代码来完成这个任务。看看[小提琴](https://jsfiddle.net/e71cugvx/1/)。 :) – Dennis98

+0

@ Dennis98 - 我不知道 - 使用全局整数似乎有点粗略 - 如果您确实需要倍数,我会实现一个事件列表。 – Hogan

相关问题