【问题标题】:Detecting presence of a scroll bar in a DIV using jQuery? [duplicate]使用jQuery检测DIV中是否存在滚动条? [复制]
【发布时间】:2016-06-01 17:47:24
【问题描述】:

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

各位有什么想法吗?

【问题讨论】:

标签: javascript jquery scrollbar


【解决方案1】:

假设 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;

【讨论】:

  • 这也有效。谢谢。但与我发布的解决方案示例不同,在现实世界中我没有“ID”可以使用,我使用 jQuery CSS 选择器选择 DIV...
  • 然后使用jQueryElement.get(0)从中获取真正的DOM节点api.jquery.com/get。
  • 虽然这真的很有用,但它真的是正确的答案,因为它根本不使用任何 jQuery 吗?
  • @DanDiplo 记住 jQuery 只是一个 JavaScript 库。我确信有人可以/已经编写了一个 jQuery 插件来进行上述比较。但是您真的认为需要这种抽象级别吗?
  • @WilliamClemens 就个人而言,不,但这就是 OP 的要求!
【解决方案2】:
// 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 */ } 

【讨论】:

  • 与解决此问题的许多其他示例/尝试相比,这是一个很好的解决方案。我确认这适用于 IE、FF 和 Chrome。
【解决方案3】:

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

包装随着 DIV 增长的内容,然后我通过比较 wrapperDiv 的高度和 containerDiv 的高度来检测是否存在(垂直)滚动条(如果内容是太大)。

如果wrapperDiv的高度大于containerDiv的高度,则有滚动条,如果小于,则没有滚动条。

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

【讨论】:

  • 您尝试过 bobince 的解决方案吗?他似乎没有额外的包装 div 也可以工作。
  • 这不是我发布的第二个链接的答案吗? stackoverflow.com/questions/2059743/…
  • 是的 bobince 的解决方案会起作用,但与我上面给出的示例不同,我实际上没有“ID”可以使用。我正在使用 jQuery CSS 选择器进行选择,所以我不能使用 getElementById 来访问 clientHeight()。另外我不相信原始的 .clientHeight 值,因为我认为它在不同的浏览器中返回的数字略有不同,不是吗?
【解决方案4】:

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

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

这是因为 scrollHeight 和 scrollWidth 是 DOM 属性。

【讨论】:

    猜你喜欢
    • 2012-10-29
    • 2011-02-04
    • 1970-01-01
    • 2014-02-08
    • 2011-10-17
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多