欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

jQuery中继器数据绑定插件

终极管理员 知识笔记 93阅读

实现类似这样的数据绑定:复读机1/* *//*-2 *复读机2009年第一版.7 .163 anrepeaterdatabindingjqueryplugin 45作者丽康6丽康2008 @ Gmail。com 789 * simpleusageexample :10 $(function(){ 11 vardata=[{ ' name ' ' English ' ' length ' 1000 },{'name''math '' length'rgba(0,128,128,1)'12$('内容')。复读机(1,数据);13});1415 * html :16 div class=' content ' 17 div class=' item ' H3 { name }/h3b { length } MB/b/div 18 div class=' split ' HR width=' 100% ' color=' blue '/div 19/div 2021 22 23 *参数24美元.内容')。复读机(1,数据);25col :您想要多少列26数据: JSON数据类型27

, 128, 1)">28* Data Binding Format:
29    put {DataBindingProperty} in HTML
30        <div class="item"> item template
31        <div class="split"> split template
32        
33* CSS:
34    .repeater_control : Repeater's style
35    .repeater_row : Row's style
36    .repeater_item : Item's style
37    .repeater_split : Split's style
38
39
40* NOTE: .
41
42* Copyright (c) 2009 LiKang ()
43* Licensed under the MIT License:
44
45*
46-------------------------------------------------------------------------------------------------------*/
47
48jQuery.fn.repeater = function(col, data){
49    var html = jQuery(this).find('.item').html();
50    var split = jQuery(this).find('.split').html();
51    var row = data.length/col;
52    if (data.length%col)
53        row++;
54
55    this.each(function(){
56        var _repeater_control = jQuery('<table class="repeater_control"></table>');
57        
58        // generate rows
59        for (var i=0; i<row; i++)
60        {
61            var _repeater_row = jQuery('<tr class="repeater_row"></tr>') ;
62            
63            // generate items
64            for (var j=0; j<col ;j++)
65            {
66                var _repeater_item = jQuery('<td class="repeater_item"></td>');
67                var inner ;
68                // replace data binding data
69                if (i*col + j >= data.length)
70                {
71                    inner = "";
72                }

73                else
74                {
75                    inner = html.replace(/{(\w+)?}/g, function($0, $1)
76                        return data[i*col+j][$1]
77                    }
);
78                }

79                _repeater_item.append(inner);
80                _repeater_row.append(_repeater_item);
81            }

82            _repeater_control.append(_repeater_row);
83            
84            // generate split row
85            if (i < row -1)
86            {
87                var _repeater_split = jQuery('<tr class="repeater_split"></tr>').append('<td>'+split+'</td>');
88                _repeater_control.append(_repeater_split);            
89            }

90        }

91        
92        //alert(_repeater_control.html());     
93
94        jQuery(this).empty().append(_repeater_control);
95    }
);
96}

标签:
声明:无特别说明,转载请标明本文来源!