滚动条在jQuery中出现/消失事件?

问题描述 投票:16回答:3

jQuery中是否有一种简单的方法来检测滚动条何时在具有overflow:auto的div上出现和消失? (喜欢一个活动吗?手指交叉...)

((我不想不必查看div内容的高度)

javascript jquery scroll scrollbar jquery-events
3个回答
6
投票

正如其他人所说,没有简单的方法。这是我过去用来检测滚动条是否存在的一些代码。

// Used like $('#my-id').hasScrollbar();

jQuery.fn.hasScrollbar = function() {
    var scrollHeight = this.get(0).scrollHeight;

    //safari's scrollHeight includes padding
    if ($.browser.safari)
        scrollHeight -= parseInt(this.css('padding-top')) + parseInt(this.css('padding-bottom'));

    if (this.height() < scrollHeight)
        return true;
    else
        return false;
}

您需要在div中添加或删除内容之后手动调用此方法,它可能仅在您对可见元素调用时才起作用,但是比从头开始要好。


7
投票

实现此目的的另一种方法是使用scrollLeft或scrollTop检查是否存在滚动条:

//nudge the scrollbar away from its starting position

$('#your_selector').scrollLeft(1);

//A value of 0 is assigned if the scrollbars are at their default position, 
//or are abscent

if($('#your_selector').scrollLeft() !== 0) return true;

//put the scrollbar back to its starting position

$('#your_selector').scrollLeft(0);

1
投票

据我所知,没有任何事情可做。但是,您“可以”为此编写自己的特殊事件,我想您必须检查一下用于高度和宽度。

如果.innerHeight超过.outerHeight,应该可以检测到滚动条元素的值。

© www.soinside.com 2019 - 2024. All rights reserved.