2013-02-23 118 views
2

我一直在研究一个页面的应用程序,并注意到我的下拉菜单有时会在他们假设隐藏的时候保持打开状态。我调查了为什么会发生,并发现如果父元素隐藏,使用扩展hide功能隐藏元素与jQuery UI是毫无价值的。为什么jQuery UI隐藏隐藏父元素?

fiddle例子展示了我的意思,只是尝试点击Hide & Show按钮,然后单击Show parent1并试图隐藏元素存在。您会注意到状态指示符会立即更新,但一旦您回到parent2,您会看到该元素仍然可见。

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

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

回答

0

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

+0

以及它将使意义上,它以这种方式工作,但有大量的关于jQuery的本身一样古老bug报告已经以这种方式工作,这是固定的,现在只有jQuery UI以这种方式工作,我认为这是一个错误,因为假设与具有相同名称的函数具有相同的行为。你在JSFiddle中的例子对于这样一个简单的事情来说是相当复杂的,我认为简单地调用一个'hide'函数的回调函数是解决这个问题的简单方法。我已经填写了错误报告。 – Giedrius 2013-02-25 11:12:01

+0

@giedrius我没有使用'hide'回调函数,因为你已经指定了延迟。我的方法使它看起来像工作正常..有替代方法太工作效果。我的方法感觉很简单,因为我只是在效果上添加了一个标志来完成这项工作。干杯!! – 2013-02-25 11:27:38