2013-02-23 112 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