+-
使用jQuery检查div是否包含溢出元素

我有一个固定高度且overflow:hidden;的div

我想用jQuery检查div是否具有超出div固定高度的元素。我该怎么办?

276
投票

您实际上不需要任何jQuery来检查是否发生溢出。使用element.offsetHeightelement.offsetHeightelement.offsetWidthelement.offsetWidth,您可以确定元素的内容是否大于其大小:

element.scrollHeight

查看实际示例:element.scrollHeight

但是,如果您想知道元素内的哪个元素可见或不可见,则需要进行更多的计算。就可见性而言,子元素有三种状态:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9PNTZ5ay5wbmcifQ==” alt =“在此处输入图像说明”>“ >>

如果您要计算半可见项目,那将是您需要的脚本:

element.scrollWidth

并且如果您不希望计算半可见,您可以进行一些计算。

38
投票

我和OP有相同的问题,但这些答案都不符合我的需求。我需要一个简单的条件,以满足简单的需求。

4
投票

所以我使用了溢出的jQuery库:var invisibleItems = []; for(var i=0; i<element.childElementCount; i++){ if (element.children[i].offsetTop + element.children[i].offsetHeight > element.offsetTop + element.offsetHeight || element.children[i].offsetLeft + element.children[i].offsetWidth > element.offsetLeft + element.offsetWidth ){ invisibleItems.push(element.children[i]); } }

3
投票

部分基于Mohsen的答案(添加的第一个条件包括孩子在父母面前隐藏的情况):

2
投票

一种方法是对照自身检查scrollTop。给内容提供一个大于其大小的滚动值,然后检查其scrollTop是否为0(如果不为0,则发生溢出。)

1
投票

用简单的英语:获取父元素。检查它的高度,然后保存该值。然后循环遍历所有子元素并检查其各自的高度。

0
投票

这是一个纯jQuery解决方案,但是很杂乱:

0
投票

这是对我有用的jQuery解决方案。 jQuery('#parent').isChildOverflowing('#child'); 等无效。

0
投票

我通过在溢出的div中添加另一个div来解决此问题。然后,您比较2个格的高度。