2016-01-06 108 views
0

所以我有一些逻辑依赖于JQuery的element.width()方法。有时我的逻辑失败了。我注意到,当元素被隐藏时,它只会失败(位于引导可折叠元素内)。我查看了文档,他们说:JQuery - 如何确定一个DOM元素是否“隐藏”?

当元素或其父元素被隐藏时,.width()报告的值不能保证准确。要获得准确的值,请确保在使用.width()之前元素可见。 jQuery将尝试 暂时显示,然后重新隐藏一个元素以测量它的尺寸,但这是不可靠的,并且(即使在准确的情况下) 会显着影响页面性能。这个展示和重新使用的测量功能可能会在将来的jQuery版本中被删除。

所以我知道我的问题。我的计划是检查元素是否“隐藏”,如果是这样,而不是立即执行逻辑,我将搜索可折叠的父元素,并订阅shown.bs.collapse事件的逻辑。

我的问题是如何检查元素是否被JQuery的宽度方法视为“隐藏”(如文档中所述)。它是如此简单:

element[0].style.display == "none" 

我想检查,捕获所有案件。

在此先感谢。

+0

https://api.jquery.com/category/selectors/visibility-filter-selectors/ – j08691

+2

合并':hidden'选择和'。就是()'method - >'$(element).is(':hidden')'(返回一个布尔值)。 –

+0

击败了我:-) –

回答

0

我相信jQuery使用这种逻辑:

$(element).is(":visible")