jeasyui在页面显式创建dialog并兼容IE8

            jeasyui可以通过jquery创建对话框,这种方式创建的对话框不是利用页面上声明的class="easyui-dialog"的div创建的。只要在dialog的onClose事件中调用dialog("destroy")方法即可。将对话框销毁后不占用资源,对话框再次打开不会因为缓存而不显示对话框上面的数据。这种创建方式在firefox中可以通过,但是客户那边要兼容IE,打开IE测试,原来jeasyui创建dialog的buttons时里面有handler,IE不支持。没办法,只有通过buttons:"#dlg-btns"这种方式创建dialog的buttons,等关闭对话框后,在firebug中看到页面上声明的对话框按钮栏的元素也被销毁掉了。于是,我再使用jquery在关闭对话框时clone()克隆html中元素的方法,效果很不理想。只有想其它办法了。。。。。。。。折腾到第二天,老板以他10多年的开发经验给我一些提示,弄出了不错的创建对话框的方法,分享一下。

       通过查看jeasyui的官网的demo,在IE8上顺利创建对话框,使用的是在html中显示创建对话框,然后点击按钮时调用dialog的open方法,打开对话框。在一个页面声明4个对话框,如果关闭对话框时不销毁对话框这样消耗资源,并且只有最上面那个对话框可以正常显示,后面几个对话框打开由于缓存的原因,基本不正常显示数据。如果关闭时销毁对话框的话,每个对话框可以正常显示,但每个对话框只能开启一次,关闭时在firebug中看到,页面的元素都没了,这样肯定满足不了需求。网上爬了一些建议,关闭前克隆对话框,还是出现了一些怪问题,一个对话第二次打开比第一次小了,再一次打开更小了。好怪的问题啊!

       最理想的方式,四个对话框共用一个在页面声明的class="easyui-dialog"的div,打开对话框时,通过href属性引用不同内容,通过不同的按钮栏创建对话框的按钮,页面初始化时将四个按钮栏隐藏,打开某个对话框的时候引用该按钮栏的id创建对话框的按钮栏,关闭时得隐藏该对话框的按钮栏,不调用dialog的destroy方法将dialog销毁。

        在页面声明一个对话框(注意,最好是在class="easyui-layou"的元素之外声明,并且设置closed="true",这样对话框在页面加载时为隐藏状态。)

   <span style="font-size:18px;"> <div id="select_leader_dlg" class="easyui-dialog" style="width:700px;height:400px;,padding:10px 20px;" closed="true">
    </div> </span>
  页面加载后在firebug中可以看到该对话框为隐藏状态: 在js中,通过以下方法打开对话框:

<span style="font-size:18px;">function openSelectDlg(title,href,btnsId){
		 $(btnsId).show();
		 $('#select_leader_dlg').dialog({
				title:title,
				href:href,
				buttons:btnsId,
				onClose:function(){
					$(btnsId).hide();
				},
			}).dialog("open").dialog("center");
	 }</span>
每个对话框打开时,设置不同的href,这样可以让对话框正常显示。对话框打开时,在firebug中可以看到dialog元素是显示状态:

关闭对话框时,对话框的元素不被销毁,同时只有一个对话框元素,不占资源。在firebug中可以看到dialog元素显示状态:

这样对话框可以多次打开,并且每次对话框内容改变,可以正常显示,没有了handler元素,IE可以正常通过。看到网上还有修改jeasyui内核什么的,clone元素。对jeasyui还没熟悉到那地步的怎么修改内核。因此,我觉得这种方式挺好的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值