使用jquery检查视口中是否可以看到div [英] Checking if a div is visible within viewport using jquery

查看:77
本文介绍了使用jquery检查视口中是否可以看到div的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用jquery来检查Div RED是否在视口内,如果没有,则检查Div ORANGE是否在视口中。如果只有一个IF语句,我正在使用的函数很有用,但是当我添加另一个IF ELSE语句时,它不会工作。

I am trying to use jquery to check if Div RED is within the viewport, and if not, then check if Div ORANGE is in the viewport. The function I am using works great if there is only one IF statement, but when I add another IF ELSE statement, it wont work.

这是函数:

$.fn.isOnScreen = function(){

    var win = $(window);

    var viewport = {
        top : win.scrollTop(),
        left : win.scrollLeft()
    };
    viewport.right = viewport.left + win.width();
    viewport.bottom = viewport.top + win.height();

    var bounds = this.offset();
    bounds.right = bounds.left + this.outerWidth();
    bounds.bottom = bounds.top + this.outerHeight();

    return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));

};

这是我添加的代码,用于检查div红色或div橙色是否在视口内

here is the code I added to check and see if div red or div orange is within the viewport

$(window).scroll(function() {
    if ($('.red').isOnScreen() === true) { 
       $('.red').remove();
    } else if ($('.orange').isOnScreen() === true) {
       $('.orange').remove();   

    }
});

这里是一个jfiddle http://jsfiddle.net/wN7ah/453/

here is a jfiddle http://jsfiddle.net/wN7ah/453/

推荐答案

这是工作版本: http://jsfiddle.net/wN7ah/455/

具有魔力的功能:

$.fn.isOnScreen = function(){

    var win = $(window);

    var viewport = {
        top : win.scrollTop(),
        left : win.scrollLeft()
    };
    viewport.right = viewport.left + win.width();
    viewport.bottom = viewport.top + win.height();

    var bounds = this.offset();
    bounds.right = bounds.left + this.outerWidth();
    bounds.bottom = bounds.top + this.outerHeight();

    return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));

};

用法:

$(window).scroll(function() {
   if ($('.orange').isOnScreen() == true) {
     //alert("removing orange");
     $('.orange').remove();   
   }
  if ($('.red').isOnScreen() == true) { 
    //alert("removing red");
    $('.red').remove();
   } 

});

如果屏幕上出现任何橙色或红色,它将删除它们。

If any orange or red is present in onscreen it'll remove them.

如果您想检查何时删除,请在删除前添加提醒: http: //jsfiddle.net/wN7ah/457/

If you want to check when it's removed, add alert before removing: http://jsfiddle.net/wN7ah/457/

这篇关于使用jquery检查视口中是否可以看到div的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆