全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
众所周知,jQuery Easyui 的tabs插件有两种方式加载某个tab(标签页)上的内容:“href远程请求”和“content本地内容”,本文就两种方式的优缺点进行简单分析和思考。两者特点:href方式加载数据的特点:1. 被加载的页面只有body元素内部的内容才会被加载,也就是jQuery的ajax请求的只是html片段。2. 加载远程url时有遮罩效果,也就是“等待中”效果,用户体验较好。3. 当加载的页面布局较为复杂,或者有较多的js脚本需要运行的时候,编码往往就需要谨慎了,容易出问题,后面会详细谈。content方式加载数据的特点:1. 比较灵活,你可以在脚本里面拼写html代码,然后赋值给tab的content属性,不过这种写法会使得代码易读性变差。2. 可以把iframe赋给content,把一个iframe嵌入也就没有什么不能完成的了。3. 使用iframe会造成客户端js重复加载,浪费资源,比如说你主页面要引用easyui的库,你的iframe也要引用,浪费就产生了。简单总结:根据上面的分析,使用content的方式较为简洁,而且可以引入iframe来搞定一切,缺点也很明显,系统较为复杂的话,将带来极大地资源浪费,只适合较为简单的页面系统;而href方式则对编码能力要求的稍微高一些,因为html的片段,稍微不注意就会处理不好,不过熟练的话,个人觉得href方式是不二之选。href常见问题:1.href只加载目标URL的html片段这个特性是由jQuery封装的ajax请求处理机制所决定的,所以目标URL页面里不需要有html,head,body等标签,即使有这些元素,也会被忽略,所以放在head标签里面的任何脚本也不会被引入或者执行。2.短暂的页面混乱:href链接的页面比较复杂的时候,easyui对其渲染往往需要一个较长的过程,这时候,加载进来的html片段毫无布局可以,过一会自动会好,这时候easyui已经完成对它的渲染。如何避免这个混乱的过程呢,还得靠easyui的一个基础插件解析器(Parser)。Parser有个onComplete事件,这个事件就是指easyui对页面完成渲染时触发,这样思路就很清晰了:用一个div遮罩住让被加载进来的html片段,在onComplete事件中,让这个div淡出,这时候渲染好的html片段就能美人出浴了,同时还整了个等待中的效果,一举两得。这样要做两件事:第一是在要加载的html片段中放一个遮罩用的div:第二是在被加载的html片段尾部处理相关事件: function show() $(#loading).fadeOut(normal, function() $(this).remove(); ); var delayTime; $.parser.onComplete = function() if(delayTime) clearTimeout(delayTime); delayTime = setTimeout(show,500); 需要注意的是,如果多个tab页面都使用了onComplete事件,当前定义的会覆盖之前定义的。其实每次easyui渲染完成均会调用onComplete事件,所以每打开一个包含easyui控件的tab页,onComplete事件就会被调用。3.html片段的easyui组件相关脚本莫名地报错:其实这个现象是跟第一个现象的原因一样的,easyui完成对html片段渲染需要一定的时间,页面越复杂,耗时越长,这时候难以避免html存在的脚本存在对easyui某些插件的调用,比如datagrid等,这个时候就会报错,解决方案同上,将这些脚本放到onComplete事件里处理,也就保证了渲染完成前,不会被执行。4.放在window里面表单验证的提示信息会乱串:这个现象应该是插件自身的bug,对位置的计算没有考虑到这些特殊的事情,解决方式可以投机取巧,在打开window后,让表单不符合验证的input获得焦点就可以了。5.两次或者多次加载远程数据问题:官方已经说明在1.2.5的版本中已经修正了这个Bug,但是还是有不少人反应会出现两次加载远程数据的现象,甚至在1.2.6版本中也会遇到,如果您确实遇到这种情况了,请按以下方式检查: 远程数据返回的数据中是否包含class=”easyui-tabs”或者class=”easyui-datagrid”这样的样式了, 如果有的话,easyui在获取html片段后会自动渲染,这时候已经对远程数据源做了一次请求; 您是否又用javascript去$(#tabsId).tabs();或者$(#tabsId).datagrid();去绑定事件或者设置属性,其实等于又一次渲染了该应控件,会再次请求远程数据。为什么会这样,看看源码便知道了:$.fn.tabs = function(options, param) if (typeof options = string) /这个地方的分支很清楚,只有当options为字符串的时候,才是直接调用控件本身提供的方法。 return $.fn.tabs.methodsoptions(this, param); /如果options不是字符串,直接构造控件,inxing渲染。 options = options | ; return this.each(function() var state = $.data(this, tabs); var opts; if (state) opts = $.extend(state.options, options); state.options = opts; else $.data(this, tabs, options: $.extend(, $.fn.tabs.defaults, $.fn.tabs.parseOptions(this), options), tabs: wrapTabs(this), selectHis: ); buildButton(this); s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【语文】上海市徐汇区园南小学小学四年级上册期末试题(含答案)
- 【英语】英语副词真题汇编(含答案)及解析
- 2020部编人教小学五年级下册语文:第五单元测试卷(附参考答案)
- 机械类劳务合同
- 西藏自治区小学五年级下学期数学第五单元测试卷-旋转与作图
- 建筑施工企业技术管理制度(同名19554)
- 2026年管理咨询师职业水平考试(企业管理咨询案例分析)自测试题及答案
- 年度框架产品采购合同
- 环境保护行业政策与市场研究
- 小型工程装修服务合同
- 工商银行社招试题及答案
- 承接查验协议书
- 职业生涯规划书模板4
- 机加工检验管理办法
- 2025至2030中国汽车测试检验和认证(TIC)行业项目调研及市场前景预测评估报告
- 经气管插管吸痰技术课件
- 2025高考政治主观题答题思路分析训练 选必二《法律与生活》
- 《山东省园林绿化工程消耗量定额》2016版交底培训资料
- 科技公司投标管理制度
- T/CECS 10381-2024滤池用不锈钢滤板及配套组件
- 学校熟食配餐合同范本
评论
0/150
提交评论