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

7wp*_*7wp 22 javascript jquery scrollbar

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

有什么想法吗?

bob*_*nce 47

假设overflowdiv是auto:

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

  • 然后使用`jQueryElement.get(0)`从它获取真正的DOM节点http://api.jquery.com/get. (10认同)
  • @DanDiplo记住jQuery只是一个JavaScript库.我敢肯定有人可以编写一个jQuery插件来进行上面的比较.但是你真的认为需要抽象级别吗? (4认同)

Plu*_*com 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);
Run Code Online (Sandbox Code Playgroud)

例:

if($('#mydiv').has_scrollbar()) { /* do something */ } 
Run Code Online (Sandbox Code Playgroud)

  • 与许多其他示例/尝试解决此问题相比,这是一个很好的解决方案.我确认这适用于IE,FF和Chrome. (2认同)