繁体   English   中英

如何知道某些内容是否位于具有滚动条的div的可见区域? jQuery的

[英]How to know if some content is in visible area of a div which has a scrollbar? jQuery

我有一个有行的表。 该表位于div中。 该表的高度大于div,因此div有一个垂直滚动条,表的某些行位于div的不可见区域。 都好。

然后通过JavaScript我正在搜索一些文本,告诉我它在哪一行。如果该行不可见,我想滚动div来显示该行。

如何确定该行是否位于div的可见或隐藏部分? 我可以通过高度计算得到它但是想知道是否有更简单的方法。

有一个名为.scrollIntoView()的DOM方法,它完全符合您的描述。 以下是如何使用它:

var tr = document.getElementById("myRow");
tr.scrollIntoView();

该方法有一个可选的alignWithTop参数,它不仅可以确保元素是可见的,而且还可以将元素置于滚动视口的顶部(就像点击锚点一样,如影子向导在他的评论中所建议的那样)

使用jQuery,使用position()函数获取匹配行的位置,然后在ScrollTop()函数中设置该值以获取元素。

这就是它的完成方式

var item = $('#test').position().top;
$('button').click(function() {
    $(window).scrollTop(item)
})

查看http://jsfiddle.net/U6tsg/1/上的工作示例

我还创建了一个动画版本

var item = $('#test').position().top;
$('button').click(function() {
    $('html, body').animate({
        scrollTop: item
    }, 'slow');
});

查看http://jsfiddle.net/U6tsg/2/上的工作示例

暂无
暂无

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

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