一千萬個為什麽

搜索

這是一個很長的鏡頭,因為我目前無法訪問代碼。但是,代碼沒有任何“特殊”。我正在使用JqueryUI和ASP.NET UpdatePanel的組合。如果我單擊任何觸發器控件(asp.net按鈕),部分回發就可以了。但是,如果在單擊JQueryUI按鈕後單擊 trigger 控件,則整個布局會混亂並且很多內容會向上移動。我可以到達一個JQueryUI按鈕,當我點擊它時,布局恢復正常,一切都很好,直到我再次點擊觸發控件。該頁面在所有最新的瀏覽器中都可以正常工作,但是這個問題出現在IE 7中。

我希望也許有人在IE 7中遇到類似的問題並找到了解決方法/解決方案。我一直試圖修復它幾天,但沒有運氣。

謝謝你的建議。

最佳答案

當UpdatePanel刷新時,它會銷毀其邊界內的DOM對象,並用新對象替換它(即使該內容可能是相同或類似的標記)。附加到舊DOM元素的任何JavaScript現在都包含對不存在的對象的引用。如果jQuery代碼優雅地處理這個問題,那麽事情就會停止工作;或更糟(如你所見)不可預測和不穩定的行為。

我發現的解決方案是獲取UpdatePanel的 beginRequest 事件並在所有jQueryUI對象上調用 destroy();並在 endRequest 事件上通過重新運行所有選擇器並重新創建jQueryUI對象來重新創建它們。

<script type="text/javascript">

    function createJQueryObjects() {
        //setup
    }

    function destroyJQueryObjects() {
        //destroy
    }
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(destroyJQueryObjects);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(createJQueryObjects);
</script>

轉載註明原文: Updatepanel刷新搞亂了IE7中的JqueryUI

猜你喜歡