在窗口事件上运行Jquery函数:加载,调整大小和滚动?

时间:2013-03-27 17:17:40

标签: javascript jquery html

如何在窗口事件上运行jquery函数:加载,调整大小和滚动?

这是我的代码 我试图检测div是否可见,然后是否运行了一些ajax代码......


<script>
function topInViewport(element) {
    return $(element).offset().top >= $(window).scrollTop() && $(element).offset().top          <= $(window).scrollTop() + $(window).height();
 }

 </script>

<script>
topInViewport($("#mydivname"))
{
// ajax code goes here
}

3 个答案:

答案 0 :(得分:104)

您可以使用以下内容。它们都将window对象包装到jQuery对象中。

Load:

$(window).load(function () {
    topInViewport($("#mydivname"))
});

Resize:

$(window).resize(function () {
   topInViewport($("#mydivname"))
});

Scroll

$(window).scroll(function () {
    topInViewport($("#mydivname"))
});

或使用on

绑定所有人
$(window).on("load resize scroll",function(e){
    topInViewport($("#mydivname"))
});

答案 1 :(得分:20)

您可以将侦听器绑定到一个常用函数 -

$(window).bind("load resize scroll",function(e){
  // do stuff
});

或另一种方式 -

$(window).bind({
     load:function(){

     },
     resize:function(){

     },
     scroll:function(){

    }
});

或者,您可以使用.bind()而不是使用.on(),因为绑定会直接映射到on()。 也许.bind()将来不会出现在jquery版本中。

$(window).on({
     load:function(){

     },
     resize:function(){

     },
     scroll:function(){

    }
});

答案 2 :(得分:3)

只需在事件中调用您的函数。

负载:

$(document).ready(function(){  // or  $(window).load(function(){
    topInViewport($(mydivname));
});

调整大小:

$(window).resize(function () {
    topInViewport($(mydivname));
});

滚动:

$(window).scroll(function () {
    topInViewport($(mydivname));
});

或在一个函数中绑定所有事件

$(window).on("load scroll resize",function(e){