Jquery dialog( 'destroy' ) 后还有缓存

使用jQuery的Dialog控件时,jQuery会将创建的dialog缓存到页面上,生成一些隐藏的div,当再次创建dialog时,由于id相同总会调用缓存中的Dialog,导致无法显示想要显示的内容。查了dialog有destroy方法,依然没有作用。

baidu一下恍然,destroy销毁的jquery ui给你生成dialog时候的那些html,不会销毁元素本身,要销毁元素本身要用remove

 

补充:上面的方法可以把Dialog彻底清除,但连同Dialog中的DIV也同时清除了,在应用中通常是自建一个Div,通过Div的id绑定Dialog,而jquery会把这个自建的div清除,内容全部放到Dialog的Div中,Dialog的Div默认是建在body中,这对于使用ajax重写页面代码的应用产生了很多冲突,如果使用上面的方法你的Dialog将只能弹出一次,关闭的时候就会被remove。查了一下替代的解决方法,可以将自建的div先clone,在close时将克隆的div重新append到页面上。



这是在jquery1.8中发现的问题,在其他版本中是否还有尚未测试。

以上是我的解决方法,参考自http://forum.jquery.com/topic/dialog-will-move-its-div-tag-to-body

实现方式还可以优化,而且网上还有一些直接改了dialog的内核的方法可以参考。


你可能感兴趣的:(前端)