Jquery 学习之路(五)grid绑定模板
最近在使用mvcpager时发现ajax分页需要使用Partial来实现,而且使用起来还是觉得不太方便。突然想自己做一个mvc的ajax分页,但是如果table直接用js输出就不好维护了。
angularJS有一个ng-repeat属性,可以重复输出html,觉得这个方式不错,所以就有了下面这个方法。
我的模板主要是使用了2个自定义属性xs-repeat(根据此id绑定),xs-template(进行模板隐藏和与普通绑定区分)。
目前只能绑定json格式,而且此方式不易于seo,但是作为后台可行,目前已经实现与js+ajax结合分页。
下面是我的代码,可以直接保存为html格式,运行即可。
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title></title>
- <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css">
- <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
- <script src="http://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script>
- <script src="../Script/jquery-1.9.1.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function () {
- $("[xs-template]").hide();
- $("a").click(function () {
- $("li").removeClass("active");
- $(this).parent().addClass("active");
- Change($(this).text());
- });
- Change(1);
- });
- function bindRepeat(repeatid, data) {
- $("[xs-repeat='" + repeatid + "']").not("[xs-template]").remove();
- var template = $("[xs-template][xs-repeat='" + repeatid + "']").prop("outerHTML");
- var arrMatch = template.match(/{{[^{]*}}/g);//{{ID}}匹配
- var html = "";
- for (var i = 0; i < data.length; i++) {
- var thisHtml = template.replace("xs-template=\"\"", "");
- for (var j = 0; j < arrMatch.length; j++) {
- var columnName = $.trim(arrMatch[j].replace(/{|}/g, ""));
- var regColumn = new RegExp(arrMatch[j], "g");
- thisHtml = thisHtml.replace(regColumn, data[i][columnName]);
- }
- html += thisHtml;
- }
- $("[xs-template][xs-repeat='" + repeatid + "']").after(html);
- $("[xs-repeat='" + repeatid + "']").not("[xs-template]").show();
- }
- function Change(page) {
- var txt = "[{ID:'xxx',Name:'first" + page + "',Sex:'dddd',Tel:'123456789'}";
- for (var i = 1; i < 9; i++) {
- txt += ",{ID:'123" + page + i + "',Name:'张三" + page + i + "',Sex:'男" + page + i + "',Tel:'123456789" + page + i + "'}";
- }
- txt += "]";
- var obj = eval("(" + txt + ")");
- bindRepeat("mytable", obj)
- }
- </script>
- </head>
- <body>
- <table class="table table-bordered table-hover">
- <thead>
- <tr>
- <th>编号</th>
- <th>姓名</th>
- <th>性别</th>
- <th>电话号码</th>
- </tr>
- </thead>
- <tbody>
- <tr xs-repeat="mytable" xs-template>
- <td><a href="javascript:void(0)" onclick="alert('{{ID}}')">{{ID}}</a></td>
- <td>{{Name}}</td>
- <td>{{Sex}}</td>
- <td>{{Tel}}</td>
- </tr>
- </tbody>
- </table>
- <ul class="pagination">
- <li class="active"><a href="javascript:void(0)">1</a></li>
- <li><a href="javascript:void(0)">2</a></li>
- <li><a href="javascript:void(0)">3</a></li>
- <li><a href="javascript:void(0)">4</a></li>
- <li><a href="javascript:void(0)">5</a></li>
- <li><a href="javascript:void(0)">6</a></li>
- <li><a href="javascript:void(0)">7</a></li>
- <li><a href="javascript:void(0)">8</a></li>
- <li><a href="javascript:void(0)">9</a></li>
- <li><a href="javascript:void(0)">10</a></li>
- </ul>
- </body>
- </html>
截图效果:
Jquery 学习之路(五)grid绑定模板的更多相关文章
- jQuery学习之路(1)-选择器
▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript ...
- 初步学习jquery学习笔记(五)
jquery学习笔记五 jquery遍历 什么是遍历? 从某个标签开始,按照某种规则移动,直到找到目标标签为止 标签树 <div> <ul> <li> <sp ...
- jQuery学习之路(7)- 用原生JavaScript实现jQuery的某些简单功能
▓▓▓▓▓▓ 大致介绍 学习了妙味,用原生的JavaScript实现jQuery中的某些部分功能 定义自己的函数库lQuery ▓▓▓▓▓▓ $()选择器的实现 jQuery是面向对象的,所以自己编写 ...
- jQuery 学习之路(1):引子
一.主流 javascript 库 除 jQuery 外,还有 Prototype.Dojo.YUI.ExtJS.MooTools ,其中 Prototype 较老,结构设计较为松散,ExtJS 界面 ...
- 我的QT5学习之路(三)——模板库、工具类和控件(下)
一.前言 作为第三篇的最后一部分,我们来看一下Qt的控件,谈到控件,就会让人想到界面的美观性和易操作性,进而想到开发的便捷性.作为windows界面开发的MFC曾经是盛行了多少年,但是其弊端也随着其他 ...
- jQuery学习之路(8)- 表单验证插件-Validation
▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 ...
- jQuery学习之路(3)- 事件
▓▓▓▓▓▓ 大致介绍 jQuery增加了并扩展了基本的事件处理机制,不但提供了更加优雅的事件处理语法,而且极大地增强了事件处理能力 ▓▓▓▓▓▓ jQuery中的事件 ▓▓▓▓▓▓ 加载DOM 在j ...
- jQuery学习之路(2)-DOM操作
▓▓▓▓▓▓ 大致介绍 jQuery作为JavaScript库,继承并发扬了JavaScript对DOM对象操作的特性,使开发人员能方便的操作DOM对象. ▓▓▓▓▓▓ jQuery中的DOM操作 看 ...
- jQuery 学习之路(4):事件
一.文档载入事件 二.事件绑定 三.事件对象 四.浏览器事件 五.表单事件 六.键盘事件 七.鼠标事件
随机推荐
- Eclipse集成Android NDK及导出Jar和so动态库
一.安装Cygwin 在Windows环境而又不想使用linux环境,可以安装cygwin(http://www.cygwin.com/ ),为了使用gcc注意cygwin的必选安装包在devel目录 ...
- bzoj2428 [HAOI2006]均分数据 模拟退火
[HAOI2006]均分数据 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 3434 Solved: 1091[Submit][Status][Dis ...
- Java并发之同步原语
volatile: 定义:Java编程语言允许线程访问共享变量,为了确保共享变量内被准确和一致性地更新,线程应该确保通过排它锁单独获得这个变量.根据volatile的定义,volatile有锁的语义. ...
- springboot线程池@Async的使用和扩展
我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行,今天我们就来实战体验这个线程池服务: 本 ...
- jsp 安装环境与基本语法
1.什么是web应用程序? web应用程序是一种可以通过web访问的应用程序.web应用程序的最大好处是用户很容易访问应用程序.用户只需要有浏览器即可,不需要安装其它软件. 2.搭建 java web ...
- IIS7绑定多个HTTPS网站并应用自签名证书
本文主要介绍如何在IIS中添加多个网站并使用同一个数字签名证书(win7+IIS7.5) IIS中添加站点site1,端口号为80,主机名为空.如下图: 创建证书 IIS->Server Cer ...
- Spring Boot 启动报错:LoggingFailureAnalysisReporter
17:57:19: Executing task 'bootRun'... Parallel execution with configuration on demand is an incubati ...
- HDU 1372 Knight Moves (广搜)
题目链接 Problem Description A friend of you is doing research on the Traveling Knight Problem (TKP) whe ...
- oracle 的number数据类型
NUMBER类型细讲:Oracle number datatype 语法:NUMBER[(precision [, scale])]简称:precision --> p scale ...
- Python 语言使用中遇到的问题汇总
1.python中的传值和传引用 和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是“传对象引用”的方式.实际上,这种方式相当于传值和传 ...