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>

截图效果:

时间: 2024-08-05 04:34:01

Jquery 学习之路(五)grid绑定模板的相关文章

jQuery 学习之路(4):事件

一.文档载入事件 二.事件绑定 三.事件对象 四.浏览器事件 五.表单事件 六.键盘事件 七.鼠标事件 jQuery 学习之路(4):事件,布布扣,bubuko.com

jQuery学习之路(四)之过滤选择器

今天是第四课主要学习过滤选择器 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>lesson4 过滤选择器</title> <link rel="stylesheet" type="text/css" href="css/lesson.css" ></link>

Jquery学习之路(三) 实现弹出层插件

弹出层的应用还是比较多的,登陆,一些同页面的操作,别人的总归是别人的,自己的才是自己的,所以一直以来想写个弹出层插件.不多废话,直接开始吧! 不想看可以在这里直接下载源码xsPop.zip 1:遮罩层 要弹出层,先要用一个遮罩层挡在下面的页面,此遮罩层是全屏的,页面滚动也要有,所以设置 position: fixed;还要有透明效果,下面是我定义的遮罩层css,取名mask .mask { position: fixed; width: 100%; height: 100%; backgroun

jQuery 学习之路(5):表单

处理表单中的元素 jQuery 学习之路(5):表单,布布扣,bubuko.com

Jquery 学习之路(四)高大上的图片轮换

网站首页没有一点动画怎么可以,我以前用过Flash As3做过图片切换,效果非常不错,可是麻烦,改变起来麻烦.一直都想自己做个图片切换效果,总认为比较麻烦,今天自己实践了一下,其实还比较简单.不过有个小问题,IE8不兼容模式下 设置有透明效果的div 样式添加失效了,但是我用谷歌,IE8兼容测试都ok. 反正是给自己记录的,也不多话了,js没有与页面分离,也没有做出插件.一个网站要不了几个这种效果,先实现了再说吧.最后的效果还是很高大上的. 下载地址:http://files.cnblogs.c

jQuery学习之路(1)-选择器

▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是"write Less,Do More",即倡导写更少的代码,做更多的事情.它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优

jQuery学习之路-A

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script type="text/javascript" src="D:/jquery2.0/jquery-2.0.0.js"></scr

jQuery 学习之路(1):引子

一.主流 javascript 库 除 jQuery 外,还有 Prototype.Dojo.YUI.ExtJS.MooTools ,其中 Prototype 较老,结构设计较为松散,ExtJS 界面很棒但需要商业授权,MooTools 也是值得学习的一个 js 库,Dojo 有一些特殊功能,也可以考虑学习,YUI 的文档很完备,语法也规范.对我个人而言,选择性依次为 jQuery > MooTools > ExtJS > Dojo > YUI > Prototype. jQ

jQuery学习之路(2)-DOM操作

▓▓▓▓▓▓ 大致介绍 jQuery作为JavaScript库,继承并发扬了JavaScript对DOM对象操作的特性,使开发人员能方便的操作DOM对象. ▓▓▓▓▓▓ jQuery中的DOM操作 看看DOM操作都有哪些 逐一来看 先写一份HTML代码,后面的代码将操作这份HTML代码 <p title="选择你最喜欢的水果">你最喜欢的水果?</p> <ul> <li title="苹果">苹果</li>