为什么jQuery UI不隐藏隐藏父元素的元素?

我一直在开发一个单页应用程序,并注意到我的下拉有时会在他们想要被隐藏时保持打开状态。 我调查了为什么会发生这种情况并发现如果父元素被隐藏,使用扩展hide函数使用jQuery UI隐藏元素是没有价值的。

这个小提琴示例显示了我的意思,只是尝试单击HideShow按钮,然后单击Show parent1并尝试在那里隐藏元素。 您会注意到状态指示器会立即更新,但是一旦您返回到parent2您将看到该元素仍然可见。

我发现使用jQuery hide没有参数或仅传递毫秒,它确实正常工作,一旦我用jQuery UI参数更新它就停止工作,所以我认为它是jQuery UI而不是jQuery本身的问题。

所以我的问题是为什么jQuery UI以这种方式工作,它是假设工作的方式还是一个bug?

我认为它的工作方式。 在这种情况下,当你回到$('#parent2').show();行上的$('#parent2').show(); ,它默认显示所有子元素。也就是说, show()parent2内的所有元素上迭代。 虽然这看起来很麻烦,但在这个JSFiddle中有一种解决方法,它是你的修改版本。

这是jQuery UI中的一个错误,它在1.10.2中得到修复。

以下是错误报告单http://bugs.jqueryui.com/ticket/9120的链接