`
s233233464
  • 浏览: 6870 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

基于jquery ui的模板

阅读更多

 

最近工作不怎么忙看啦先jquery ui和exitjs,由感而发写啦个基于jquery的模板隐形,请大家多多指教

 

代码:                                                                                                                                              

(function($){
    var re=/\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g;
    $.widget("ui.template", {
        //模板中要替换的位置
        options:{
            //是否启用自定义格式化函数包
            disableFormats: false,
            //输出格式化定义
            fm:this,
            //是否自动编译
            autoExecute: false,
            compile: false,
            //要编译的模板
            html:'',
            //要替换的模板数据
            data:null
        },
        _create: function(){
            var self=this,options=self.options;
            self.returnElement=this.element;
            if(!this.compiled){
                self.compile();
            }
            self.tempElement=self.applyTemplate(options.data);
        },
        _init: function(){

            var self=this;

            self._execute=false;   //修正时间2010-4-23
            if(this.options.autoExecute){
                this.execute();
            }
        },
        destroy: function(){},
        widget: function() {
       return this.returnElement;
    },
    //设置和获取配置项 
    _setOption: function(key, value){
        var self=this;
        $.Widget.prototype._setOption.apply(self, arguments); 
    },
   
    applyTemplate: function(values){
        var self=this,
                options=self.options,
                userF=self.disableFormats !== true,
                fm=options.fm;
        if(options.compile){
            return self.compiled(values);
      }       
        function fn(m, name, format, args){
            if(format&&userF){
                if (format.substr(0, 5) == "this.") {
                    return self.call(format.substr(5),values[name],values);
                }else if(format.substr(0, 1) == "."){
                    var temp=values[name][format.substr(1)];
                    return temp !==undefined ? temp : "";
                }
                else{
                    if (args) {
                        var re = /^\s*['"](.*)["']\s*$/;
                        args = args.split(',');
              for(var i = 0, len = args.length; i < len; i++){
                  args[i] = args[i].replace(re, "$1");
              }
              args = [values[name]].concat(args);
                    }else{
                        args = [values[name]];
                    }
                    return fm[format].apply(fm, args);
                }
            }else{
                return values[name] !== undefined ? values[name] : "";
            }
        }
        return options.html.replace(re, fn);
    },
   
    compile: function(){
        var self=this,
                options=this.options,
                useF = options.disableFormats !== true,
                fm=options.fm,
                body;
        function fn(m, name, format, args){
         if(format && useF){
            args = args ? ',' + args : "";
            if(format.substr(0, 1) != "."){
                if(format.substr(0, 5) != "this."){
                    format = "fm." + format + '(';
                }else{
                  format = 'this.call("'+ format.substr(5) + '", ';
                  args = ", values";
                }
            }
         }else{
             args= ''; format = "(values['" + name + "'] == undefined ? '' : ";
         }
         var tmp="";
         if(format.substr(0, 1) == "."){
             tmp="',values['"+name+"']['"+format.substr(1)+"'],'";
         }else{
             tmp="'," + format + "values['" + name + "']" + args + "),'";
         }
         return tmp;
      }
      body = ["this.compiled = function(values){ return ['"];
      body.push(options.html.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(re, fn));
      body.push("'].join('');};");
      body = body.join('');
      eval(body);
      return self;
    },
    call : function(fnName, value, allValues){
        return this.options[fnName](value, allValues);
    },
    execute: function(){
        var self=this;
        if(!self._execute){
            self.returnElement.html(self.tempElement);
            self._execute=true;
        }
        return self;
    }
    });
    $.extend($.ui.template, {
        version: "1.0"
    });
})(jQuery);

 

 

示例:

 

   js代码:

  1. (function($){
  2.     var data={
  3.           name:'ning cheng zeng',
  4.           age:25,
  5.           kids:{
  6.                 name:'aaaaaaaaaaaa',
  7.                 age:1
  8.           }
  9.     };
  10.     var tpl="<p>name:{name} </p><p>age:{age:f} </p><p>kids:name:{kids:.name} </p><p>name:{name:this.aa} </p>";
  11.      var format={
  12.            f:function(a,b){
  13.               return a+":"+(b-5)
  14.           }
  15.      }
  16.     $('h1').template({
  17.          html:tpl,
  18.          data:data,
  19.          fm:format,
  20.          autoExecute:false,
  21.          compile:true,
  22.          aa:function(a){
  23.               return a;
  24.          }
  25.     });
  26.    
  27. })(jQuery);

   html代码:

    <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Templates Example</title>
         <script type="text/javascript" src="../jquery-1.4.2.js"></script>
    <script type="text/javascript" src="../src/jquery.ui.core.js"></script>
    <script type="text/javascript" src="../src/jquery.ui.widget.js"></script>
    <script type="text/javascript" src="../src/Template.js"></script>
    <script type="text/javascript" src="../src/XTemplate.js"></script>
    <script language="javascript" src="templates.js"></script>
</head>
<body>

<h1>Templates</h1>

</body>
</html>

 

最后执行结果为

 

   <h1><p>name:ning cheng zeng </p><p>age:age:20 </p><p>kids:name:aaaaaaaaaaaa </p><p>name:name </p></h1>

 

 

这是小弟根据extjs的模板该写的一个基础的模板 请大家给点意见谢谢;

如有需要等待小弟下次更新

0
0
分享到:
评论
2 楼 s233233464 2010-04-19  
这个是jQuery UI的东西
1 楼 sunwt 2010-04-19  
$.widget 是哪定义的~ 1.3.2没有这个啊~

相关推荐

    Jquery Ui 后台模板界面

    jQuery UI 是一个基于 jQuery JavaScript 库的用户界面插件集合,它提供了丰富的交互式组件和可自定义的主题,适用于构建后台管理系统界面。jQuery UI 包含了多种功能强大的组件,如对话框(Dialog)、日期选择器...

    Jquery开发UI模板

    **jQuery MiniUI 开发UI模板** jQuery MiniUI 是一个基于 jQuery 的轻量级 Web UI 框架,专为开发企业级 Web 应用提供快速、简洁、强大的组件库。这个压缩包文件“jQuery MiniUI V2_0 Demo”包含了 MiniUI 的 2.0 ...

    jquery ui制作的响应式后台管理模板html源码下载

    本文将深入探讨一个基于jQuery UI库构建的响应式后台管理模板,它能为开发者提供一个高效、易用且适应多设备的界面解决方案。 首先,jQuery UI是一个强大的JavaScript库,它提供了丰富的UI组件,如对话框、拖放功能...

    jquery easy ui模板

    jQuery Easy UI 是一个基于 jQuery 的前端开发框架,它提供了一系列的组件和样式,使得开发者能够快速构建出美观且功能丰富的 Web 应用程序。这个压缩包包含的 "jQuery Easy UI 学习模板" 是为初学者准备的实践资源...

    jquery UI组件集合

    7. 模板(Template):jQuery UI 的模板功能允许开发者创建和管理重复的数据结构,通过简单的标记语言来渲染动态数据。 8. 效果(Effects):jQuery UI 提供了一系列内置的动画效果,如淡入淡出、滑动、切换等,...

    后台管理html模板(包含1个jqueryUI的).7z

    【标题】:“后台管理html模板(包含1个jqueryUI的).7z”指的是一个压缩包文件,其中包含用于构建后台管理界面的HTML模板,并且这些模板至少集成了一个jQuery UI库。 【描述】:“后台管理html模板(包含1个jqueryUI...

    jqgrid+jqueryui.theme

    1. CSS主题:jQuery UI Theme基于Themeroller工具,允许开发者在线定制符合品牌风格的颜色、字体和布局,生成一组CSS文件,应用于整个jQuery UI组件。 2. 组件覆盖:包括按钮、对话框、滑块、日期选择器等在内的所有...

    jquery-ui-1.8.13库模板UI演示效果

    jQuery UI 是一个基于 jQuery JavaScript 库的强大用户界面库,它提供了丰富的交互组件和设计模式,为网页开发者提供了便捷的方式来创建美观、功能丰富的交互界面。jQuery UI 1.8.13 版本是这个库的一个历史版本,...

    超级牛B的Jquery-UI后台管理模板

    jQuery-UI 是一个强大的前端开发库,它基于 jQuery JavaScript 库,提供了一套完整的用户界面组件,包括可交互的控件、动画效果和可自定义的主题。这款“超级牛B的Jquery-UI后台管理模板”无疑是为开发者构建高效、...

    jquery ui强大的UI功能组件源码

    **jQuery UI** 是一个基于 **jQuery** 库的开源用户界面库,提供了丰富的交互效果、可自定义的主题以及多种功能组件。它使得前端开发者能够快速、便捷地构建出美观且功能丰富的网页应用。jQuery UI 包含了多个关键...

    基于jquery的CMS后台管理系统网站模板

    **基于jQuery的CMS后台管理系统网站模板详解** 在Web开发领域,内容管理系统(CMS)是用于构建和维护网站的工具,而后台管理系统则是CMS的核心部分,它负责管理网站的内容、用户、权限等。本模板——“基于jQuery的...

    最新jQuery UI架包

    jQuery UI 是一个强大的JavaScript库,它是基于jQuery核心库构建的,专为创建用户界面而设计。这个最新的jQuery UI包包含了所有必要的组件和资源,能够帮助开发者快速、高效地开发出功能丰富、用户体验良好的Web应用...

    springmvc+maven+junit+jqueryUI

    标题中的"springmvc+maven+junit+jqueryUI"是一个典型的Web开发技术组合,涉及四个主要组件:Spring MVC、Maven、JUnit和jQuery UI。现在,让我们深入探讨这些技术及其在实际开发中的应用。 1. Spring MVC(Spring ...

    jQuery ui基于myflow.js绘制流程图插件,自定义组织架构图图表,拖拽绘制组织架构图表代码.zip

    本话题主要涉及两个关键库——jQuery UI和myflow.js,以及如何结合它们来构建自定义的组织架构图和流程图。首先,让我们深入了解这两个库及其功能。 jQuery UI是一个流行的JavaScript库,它是jQuery项目的扩展,...

    Jquery UI Portal 包含四个模板示例,好不容易搜集的

    jQuery UI Portal 是一个基于 jQuery 库的用户界面组件,它提供了构建交互式和动态门户布局的功能。这个库主要适用于开发者想要创建自定义门户,展示多模块信息,允许用户根据需要进行个性化配置。本文将深入探讨...

    一款逆天超级牛B的Jquery-UI后台管理模板

    这款“逆天超级牛B的jQuery-UI后台管理模板”正是基于这样的理念,将功能强大的jQuery-UI组件与后台管理需求相结合,打造出了一个高效、易用的后台界面。 首先,我们来深入了解一下jQuery-UI的主要组件: 1. **...

    最新jquery-ui

    jQuery UI 是一个基于 jQuery 库的扩展框架,它提供了一系列可交互、可定制的界面组件,如日期选择器、对话框、拖放功能、进度条等。这个"最新jquery-ui"压缩包包含了构建用户界面所需的基本元素,适用于前端开发者...

    jquery easy-ui

    **jQuery EasyUI** 是一个基于 jQuery 的前端框架,它提供了丰富的用户界面组件,极大地简化了网页开发中的交互设计。这个整体文件包包含了jQuery EasyUI的所有核心组件,如树形控件、表单、表格等,同时也附带了...

    jqueryUI控件

    jQuery UI 是一个基于 jQuery JavaScript 库的开源项目,它提供了一系列丰富的用户界面(UI)组件,旨在帮助开发者构建交互性强、视觉吸引力高的网页应用。jQuery UI 的控件采用扁平化设计,使得界面更加简洁、现代...

    JQUERY-UI中文定制版

    jQuery UI 是一个基于 jQuery JavaScript 库的用户界面插件集合,它提供了丰富的交互效果、可自定义的主题以及多种组件,使得开发者能够快速构建功能完善的网页应用。在这个"JQUERY-UI中文定制版"中,特别强调了对...

Global site tag (gtag.js) - Google Analytics