繁体   English   中英

如果元素不在Windows视图中,则滚动

[英]Scroll if element not in windows view

我有一个表格,您可以在其中选择一个元素,然后每当您按向上或向下箭头键时,就会选择下一个或上一个表格行。

为此,我创建了以下jquery:

    $(document).keydown(function(e) {
    var ar=new Array(33,34,35,36,37,39);
    if(selected_row_id != null){
        var key = e.which;
        // up
        if(key == 38){
            $('#'+selected_row_id).prev().trigger('click');
            e.preventDefault();
        }
        //down
        if(key == 40 ){
            $('#'+selected_row_id).next().trigger('click');
            e.preventDefault();
        }

        if($.inArray(key,ar) > -1) {
            e.preventDefault();
            return false;
        }
        return true;
    }
});

这很好,但是有一个使我烦恼的错误。 当表格行比您在屏幕上实际看到的位置靠下时(这意味着您必须滚动),窗口不会自动滚动。

我的问题是,当屏幕上看不到某个元素时,如何确保窗口滚动?

这是从此处获取的函数:

function isScrolledIntoView(elem)
{
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom)
      && (elemBottom <= docViewBottom) &&  (elemTop >= docViewTop) );
}

如果元素在窗口中完全可见,则返回true ,否则返回false

如果返回false ,则可以适当滚动窗口。

是的,这是可能的。

查看ScrollTo: http : //www.w3schools.com/jsref/met_win_scrollto.asp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM