我想编写一个代码来查找屏幕上是否存在元素。 根据我的要求,它还应该支持一个内部滚动的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"))
每次都会有效,或者有一些用例会失败吗?