Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在视口中检测多个div元素_Javascript_Jquery - Fatal编程技术网

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。非常感谢你的帮助!