`
ding43930053
  • 浏览: 41860 次
社区版块
存档分类
最新评论

jquery easyui tab加载内容的几种方法

 
阅读更多

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片段尾部处理相关事件:

需要注意的是,如果多个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({…});去绑定事件或者设置属性,其实等于又一次渲染了对应控件,会再次请求远程数据。

为什么会这样,看看源码便知道了:

Js代码 复制代码收藏代码
  1. $.fn.tabs=function(options,param){
  2. if(typeofoptions=='string'){
  3. //这个地方的分支很清楚,只有当options为字符串的时候,才是直接调用控件本身提供的方法。
  4. return$.fn.tabs.methods[options](this,param);
  5. }
  6. //如果options不是字符串,直接构造控件,inxing渲染。
  7. options=options||{};
  8. returnthis.each(function(){
  9. varstate=$.data(this,'tabs');
  10. varopts;
  11. if(state){
  12. opts=$.extend(state.options,options);
  13. state.options=opts;
  14. }
  15. else{
  16. $.data(this,'tabs',{
  17. options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),options),
  18. tabs:wrapTabs(this),
  19. selectHis:[]
  20. });
  21. }
  22. buildButton(this);
  23. setProperties(this);
  24. setSize(this);
  25. initSelectTab(this);
  26. });
  27. };

因此,直接传入对象的话,所有控件都会重新构造的,tabs多次加载的问题大多数就是这么发生的。

分享到:
评论

相关推荐

    jquery easyui datagrid demo

    jQuery EasyUI 是一个基于 jQuery 的前端框架,它封装了一系列的 jQuery 插件,为开发者提供了构建用户界面的简便方法。这个“jquery easyui datagrid demo”包含了一些关于如何使用 jQuery EasyUI 中 Datagrid 组件...

    jQuery easyui后台管理页面tab布局样式代码

    Tab布局是jQuery EasyUI中的一个重要特性,它允许在一个页面上展示多个并行的内容区域,每个区域被一个标签页所代表,用户可以通过点击不同的标签来切换显示的内容。这种布局方式常用于后台管理系统,因为它可以有效...

    jquery easyui 帮助文档

    jQuery EasyUI 的 API 文档通常会详细说明每个组件的使用方法、配置选项、事件以及方法。例如,Datagrid 的 API 可能会涵盖如何加载数据、如何处理行点击事件、如何进行数据排序等。开发者可以通过查阅API文档了解...

    jqueryEasyUI

    **jQuery EasyUI 知识点详解** jQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列的 UI 组件,使得开发者能够快速构建出美观且功能丰富的 Web 应用程序。这个框架大大简化了网页界面的设计工作,使得...

    jQuery EasyUI的api

    - **.chm文件**: 提供的jQuery EasyUI 1.4 版 API 中文版 .chm文件是离线帮助文档,其中包含了所有组件的详细说明、示例代码和方法,是学习和查询API的重要资源。 理解并熟练运用这些知识点,开发者就能有效地利用...

    初试JqueryEasyUI(附Demo)

    **jQuery EasyUI 知识点详解** jQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列的 UI 组件,使得开发者能够快速构建出美观且功能丰富的 Web 应用程序。这个初试 Jquery EasyUI 的 Demo 旨在帮助新手...

    jQuery EasyUI 1.9.4 chm文档

    针对jQuery EasyUI的1.9.0的在线帮助文档进行整理,生成chm文件,便于开发时或者离线对easyi控件的属性、文法、事件等内容的查看。

    Jqueryeasyui使用说明

    资源名称:Jquery easyui 使用说明内容简介:Jquery easyui 使用说明 中文PDF版主要讲述的是Jquery easyui 使用说明;感兴趣的朋友可以过来看看。jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的...

    jQuery EasyUI EasyUI 组件范例

    根据提供的文件信息,本文将详细解释与“jQuery EasyUI”相关的知识,特别是“EasyLoader”组件的使用方法及其在实际项目中的应用场景。 ### jQuery EasyUI简介 jQuery EasyUI 是一个基于 jQuery 的用户界面插件...

    jquery easyUi使用文档pdf 和 word版本

    这份 PDF 文档通常包含详尽的介绍和示例,涵盖了 jQuery EasyUI 的主要组件和使用方法。可能包括以下内容: 1. **基本概念**:解释 jQuery EasyUI 的核心理念,如 MVC 模式,以及如何与后端数据进行交互。 2. **...

    jQuery EasyUI 参考资源合集

    首先,`jQuery EasyUI1.2 API文档.CHM` 是一个帮助文件,它详细列出了 jQuery EasyUI 1.2 版本的所有 API 和方法。CHM 文件是一种常见的 Windows 帮助文档格式,里面包含索引、搜索功能,方便用户查找和理解各种组件...

    jQuery EasyUI 1.5.1 版 API 中文版

    3. **API 参考**:文档中包含了一个完整的 API 参考,列出了所有可用的 jQuery EasyUI 函数、方法和属性。开发者可以通过查阅这个部分来了解如何操作和定制组件,比如改变组件的属性、触发或响应特定事件等。 4. **...

    jQuery EasyUI v1.3.5官方API中文版

    jQuery EasyUI 是一款非常棒的WEB前端UI框架,很多朋友都在找jQuery EasyUI API 中文文档,本次给大家提供的就是jQuery EasyUI v1.3.5官方API中文版,有需要的拿去用吧

    jquery easyui + Ztree +折线图

    在Web开发中,jQuery EasyUI、ZTree和折线图是三种常见的组件,它们分别用于构建用户界面、实现树形结构展示和数据可视化。本篇文章将深入探讨这些技术及其在实际项目中的应用。 首先,jQuery EasyUI是一个基于...

    jQuery EasyUI v1.10.0.zip

    4. **easyloader.js**:EasyLoader是jQuery EasyUI的一部分,用于自动化加载所需的组件,帮助减少页面加载时间,提高性能。 5. **jquery.easyui.mobile.js**:这个文件针对移动设备进行了优化,提供了一套适应手机...

    SSH+Jquery easyUI后台管理系统

    SSH+jQuery EasyUI后台管理系统是一种基于Struts2(S)、Spring(S)和Hibernate(H)三大开源框架的Web应用程序开发模式,结合jQuery EasyUI前端框架,构建出高效、简洁且具有现代感的后台管理界面。这个系统设计的...

    jQuery EasyUI 1.3.6 离线简体中文API文档

    最新版本的jQuery EasyUI 1.3.6版全中文API汉化文档火热出炉,由于很多人和我要chm格式的,所以本次API我提供了2种版本的API,一个还是以前的EXE格式,另外一个就是人气颇高的chm格式。本次还将EasyUI 1.3.6版直接...

    ssm+jqueryeasyui案例

    SSM框架,全称为Spring、SpringMVC和MyBatis的集成框架,是Java Web开发中常用的一种技术栈。Spring负责整个应用的依赖注入和管理,SpringMVC处理Web层的请求分发,而MyBatis则作为持久层的数据访问框架。jQuery ...

    Jquery EasyUI 日历Demo

    JQuery EasyUI 是一个基于 jQuery 的轻量级前端框架,它提供了一系列的 UI 组件,如对话框、表格、树形菜单、按钮等,用于快速构建用户界面。在这个"Jquery EasyUI 日历Demo"中,我们将探讨如何利用 EasyUI 的日历...

    jQueryEasyUI1.3.6版本

    2. **数据绑定**:jQuery EasyUI 支持与后台数据源进行数据绑定,通过Ajax或JSONP实现异步加载,使页面内容动态更新,提高用户体验。例如,表格组件Grid可以直接与服务器端的数据接口进行交互,实现分页、排序、过滤...

Global site tag (gtag.js) - Google Analytics