在屏幕上找到任何元素的正确通用方法是什么?

时间:2013-12-08 08:35:26

标签: javascript jquery html scroll visible

我想编写一个代码来查找屏幕上是否存在元素。 根据我的要求,它还应该支持一个内部滚动的div内的元素。

假设

1.应该只支持一个级别的内部滚动。

2.仅检查垂直滚动的上下文中的可见性。

主要问题是此link所示的以下用例。 元素A($(“#innerele”))存在于可滚动的DIV($(“#outerdiv”))内。首先,您必须确定DIV本身是否存在于屏幕上,然后测试A是否可见。例如,A可能位于DIV内部的顶部位置,因此可见,但如果DIV本身不可见,那么它应该返回false。

我可以编写以下代码,它是jquery插件,它负责满足上述要求。上下文是内部滚动的DIV。

$.fn.isonscreen = function(context){
    //Subtract the offset of the parent container.
    //Will be 0 in case cont is undefined
    var tominus=0,
    //Add the scrollTop position incase no cont is undefined.
    toadd=0;
    if(context){
        //Find if the div is itself visible
        if(!context.isonscreen()){
            return false;
        };
        tominus = context.offset().top;
    }else{
        context = $(window);
        toadd = context.scrollTop();
    }

    if($(this).offset().top - tominus <= (toadd + context.height())){
        return true;
    };
    return false;
}

对于上面的链接,找到A是否在屏幕上的代码 -

$("#innerele").isonscreen($("#outerdiv"))

每次都会有效,或者有一些用例会失败吗?

0 个答案:

没有答案