Updatepanel刷新搞乱了IE7中的JqueryUI

时间:2010-04-19 00:57:26

标签: asp.net jquery jquery-ui internet-explorer-7 updatepanel

这是一个很长的镜头,因为我目前无法访问代码。但是,代码没有任何“特殊”。我正在使用JqueryUI和ASP.NET UpdatePanel的组合。如果我单击任何trigger控件(asp.net按钮),部分回发就可以了。但是,如果在单击JQueryUI按钮后单击trigger控件,则整个布局会混乱并且大量内容会向上移动。我可以到达一个JQueryUI按钮,当我点击它时,布局恢复正常,一切都很好,直到我再次点击触发控件。该页面在所有最新的浏览器中都可以正常工作,但这个问题出现在IE 7中。

我希望也许有人在IE 7中遇到类似的问题并找到了解决方法/解决方案。我一直试图修复它几天,但没有运气。

感谢您的任何建议。

1 个答案:

答案 0 :(得分: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>