16

jQuery中是否有一种简单的方法来检测滚动条何时出现和消失在具有溢出:自动的div上?(就像一个事件?手指交叉......)

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

4

3 回答 3

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);
于 2011-04-02T12:29:11.353 回答
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 添加或删除内容后,您需要手动调用它,并且它可能仅在您在可见元素上调用它时才有效,但它比从头开始更好。

于 2010-04-06T23:00:55.427 回答
1

据我所知,没有事件发生。
但是,您“可以”为此编写自己的特殊事件,我想您必须检查高度和宽度。

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

于 2010-04-05T11:21:51.707 回答