2010-04-19 132 views
0

搞亂jQueryUI的這是一個有點長鏡頭,因爲我沒有在時刻訪問代碼。但是,關於代碼沒有什麼特別的。我正在使用JqueryUI和ASP.NET UpdatePanels的組合。如果我點擊任何trigger控制(asp.net按鈕)時,局部回發的罰款。但是,如果我點擊點擊一個按鈕jQueryUI的後trigger控制,那麼整個佈局弄亂了,很多向上的內容移動。我只差一點就達到jQueryUI的按鈕,當我點擊,佈局恢復正常,一切都很好,直到我再次點擊觸發控制。該網頁能正常工作在所有最新的瀏覽器,但這個問題出現在IE 7的UpdatePanel刷新IE7

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

感謝您的任何建議。

+0

你有這個網址,所以我可以看看嗎? – XGreen 2010-04-19 01:02:16

+0

對不起,它還沒有在生產服務器上。 – 2010-04-19 01:08:45

回答

0

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> 
+0

現在我明白爲什麼開發人員有激情憎恨IE:D。感謝雷克斯,我明天會試試這個,並告訴你它是否有效。 – 2010-04-19 01:10:19

+0

謝謝雷克斯,我設法解決了這個問題。事實證明,這是一些事情的結合,但我必須銷燬,然後像你一樣重新創建,否則jquery在回發後停止工作。 – 2010-04-19 14:50:02