Javascript 在视口中检测多个div元素
在这种情况下,它只能检测一个Javascript 在视口中检测多个div元素,javascript,jquery,Javascript,Jquery,在这种情况下,它只能检测一个DOM元素。如果我有多个元素需要检测,就像这样。它将忽略第二个div标记 有人知道如何将viewbag中的多个div元素传递到此函数中吗 $.fn.is_on_screen = function () { var win = $(window); var viewport = { top: win.scrollTop(), left: win.scrollLeft() }; viewport.righ
DOM
元素。如果我有多个元素需要检测,就像这样。它将忽略第二个div
标记
有人知道如何将viewbag
中的多个div
元素传递到此函数中吗
$.fn.is_on_screen = 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));
if ($('.target').is_on_screen()) {
alert('hey');
}
};
$.fn.is\u在屏幕上=函数(){
var win=$(窗口);
变量视口={
top:win.scrollTop(),
左: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();
返回(!(viewport.rightbounds.right | | viewport.bottombounds.bottom));
如果($('.target')。在屏幕()上是{
警惕(‘嘿’);
}
};
这是因为当调用$('.target').is_on_screen()
时,只考虑数组中的第一个元素,它是类为目标的第一个DOM元素
要解决这个问题,请编写以下内容:
function isTargetVisble() {
var retunVal = false;
$('.target').each(function() {
if( $(this).is_on_screen() ) {
retunVal = true;
}
});
return retunVal;
}
并使用它
if( isTargetVisble() ) { // if target element is visible on screen after DOM loaded
而不是
if( $('.target').is_on_screen() ) { // if target element is visible on screen after DOM loaded
工作谢谢Sreekesh。非常感谢你的帮助!