首页 > 代码库 > Jquery 学习之路(五)grid绑定模板
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绑定模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。