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):事件
一.文档载入事件 二.事件绑定 三.事件对象 四.浏览器事件 五.表单事件 六.键盘事件 七.鼠标事件
随机推荐
- C#学习之自定义数组及其排序
在C#中对数组的定义比较灵活.这里着重说一下自定义数组和Array类的排序. 在Array类中通过属性Length就可以获取整个数组中数据的数量,可以通过foreach迭代数组. 使用Rank属性可以 ...
- POJ2528 线段树离散化
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 62771 Accepted: 18120 ...
- Java中JAVA_HOME与CLASSPATH的解析(转)
很多人在初学Java的时候经常会被书中介绍的一堆环境变量的设置搞得头昏脑胀,很多书中都会在初装JDK的时候让他大家设置JAVA_HOME环境变量,在开发程序的时候设置CLASSPATH环境变量,而很多 ...
- margin和padding
一.margin基础语法与结构 1.margin语法 Margin:10px Margin的值是数字+html单位,同时也可以为auto(自动.自适应) 2.应用结构 Div{margin:10px} ...
- [LeetCode] 8. String to Integer (atoi) ☆
Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...
- Android 命名规范 (转)
刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件什么是什么用的,就要读一遍甚至好几遍才知道,这样的话,在代码的审查和修改过程中就会浪费不少不必要的时间.如果就是我一个人 ...
- jsp05 指令与动作
JSP7个动作指令如下 : jsp:forward: 执行页面转向,将请求的处理转发到下一个页面. jsp:param: 用于传递参数,必须与其他支持参数曲标签一起使用. jsp:include: 用 ...
- Java——Iterate through a HashMap
遍历Map import java.util.*; public class IterateHashMap { public static void main(String[] args) { Map ...
- 【洛谷 P2783】 有机化学之神偶尔会做作弊 (双联通分量)
题目链接 可能是除了<概率论>的最水的黑题了吧 用\(Tarjan\)缩点(点双联通分量),然后就是树上两点之间的距离了,跑\(LCA\)就好了. #include <cstdio& ...
- .net JsonHelper json帮助类
using Newtonsoft.Json; using System.Runtime.Serialization.Json; using System.Text; public class Json ...