使用jQuery检测DIV中滚动条的存在?

时间:2010-04-15 17:55:53

标签: javascript jquery scrollbar

我想使用jQuery检测DIV中是否存在滚动条。我正在考虑使用$('div').scrollTop(),但在滚动条位于顶部且根本没有滚动条的情况下,返回0。

任何想法的人?

4 个答案:

答案 0 :(得分:46)

假设div上的overflowauto

var div= document.getElementById('something'); // need real DOM Node, not jQuery wrapper
var hasVerticalScrollbar= div.scrollHeight>div.clientHeight;
var hasHorizontalScrollbar= div.scrollWidth>div.clientWidth;

答案 1 :(得分:18)

// plugtrade.com - jQuery detect vertical scrollbar function //
(function($) {
    $.fn.has_scrollbar = function() {
        var divnode = this.get(0);
        if(divnode.scrollHeight > divnode.clientHeight)
            return true;
    }
})(jQuery);

示例:

if($('#mydiv').has_scrollbar()) { /* do something */ } 

答案 2 :(得分:0)

我最后通过执行以下操作找到了解决方案:

用DIV包裹增长的内容,然后通过比较wrapperDiv的高度与containerDiv的高度(通常有滚动条)来检测是否存在(垂直)滚动条如果内容太大了。)

如果wrapperDiv的高度大于containerDiv的高度,则会有一个滚动条,如果它更小,则没有滚动条。

<DIV id="containerDiv" style="width:100px;height:100px;overflow:auto;">
    <DIV id="wrapperDiv">
        .... content here...
    </DIV>
</DIV>

答案 3 :(得分:0)

我会修改上面提到的bobince,因为你要求jQuery

var div= $('#something');
var hasVerticalScrollbar= div[0].scrollHeight > div[0].clientHeight;
var hasHorizontalScrollbar= div[0].scrollWidth > div[0].clientWidth;

这是因为scrollHeightscrollWidth是DOM属性。