使用jQuery检测DIV中滚动条的存在?
我想使用jQuery检测DIV中是否存在滚动条。 我想使用$('div').scrollTop()
但在滚动条位于顶部且根本没有滚动条的情况下返回0。
任何想法的家伙?
假设div上的overflow
是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;
// 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 */ }
因为你要求jQuery,我会修改上面提到的bobince
var div= $('#something'); var hasVerticalScrollbar= div[0].scrollHeight > div[0].clientHeight; var hasHorizontalScrollbar= div[0].scrollWidth > div[0].clientWidth;
这是因为scrollHeight
和scrollWidth
是DOM属性。
好吧,我最终通过执行以下操作找到了解决方案:
用DIV包装增长的内容,然后我通过比较wrapperDiv
的高度和containerDiv
的高度(如果内容太大通常有滚动条)来检测是否存在(垂直)滚动条。
如果wrapperDiv
的高度大于containerDiv
的高度,则有一个滚动条,如果它更小,则没有滚动条。
.... content here...