如何在窗口事件上运行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
}
答案 0 :(得分:104)
您可以使用以下内容。它们都将window
对象包装到jQuery对象中。
$(window).load(function () {
topInViewport($("#mydivname"))
});
$(window).resize(function () {
topInViewport($("#mydivname"))
});
$(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){