2010-04-19 79 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