jQuery Repeater 数据绑定插件

实现类似这样的数据绑定:

 

 

ContractedBlock.gif ExpandedBlockStart.gif Repeater
 1ExpandedBlockStart.gifContractedBlock.gif/**//*-------------------------------------------------------------------------------------------------------
 2* Repeater v1.0 - 2009.7.16 
 3    an Repeater Data Binding jQuery Plugin
 4
 5    by LiKang
 6    likang2008@gmail.com
 7    
 8
 9* SIMPLE USAGE Example:
10    $(function(){
11        var data = [{"name":"english","length":1000},{"name":"math","length":1111},{"name":"math","length":1111}];
12        $('.content').repeater(1, data);
13    });
14
15* HTML:
16    <div class="content">
17        <div class="item"><h3>{name}</h3><b>{length} MB</b></div>
18        <div class="split"><hr width="100%" color="blue" /></div>
19    </div>
20
21
22    
23* Parameters
24    $('.content').repeater(1, data);
25        col : how many columns you want
26        data: json data type
27
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: filename must be enclosed in tag.  Various file paths can be set using the filepath option.
41
42* Copyright (c) 2009 LiKang (http://likang.cnblogs.com/)
43* Licensed under the MIT License:
44* http://www.opensource.org/licenses/mit-license.php
45*
46-------------------------------------------------------------------------------------------------------*/

47
48ExpandedBlockStart.gifContractedBlock.gifjQuery.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
55ExpandedSubBlockStart.gifContractedSubBlock.gif    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++)
60ExpandedSubBlockStart.gifContractedSubBlock.gif        {
61            var _repeater_row = jQuery('<tr class="repeater_row"></tr>') ;
62            
63            // generate items
64            for (var j=0; j<col ;j++)
65ExpandedSubBlockStart.gifContractedSubBlock.gif            {
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)
70ExpandedSubBlockStart.gifContractedSubBlock.gif                {
71                    inner = "";
72                }

73                else
74ExpandedSubBlockStart.gifContractedSubBlock.gif                {
75ExpandedSubBlockStart.gifContractedSubBlock.gif                    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)
86ExpandedSubBlockStart.gifContractedSubBlock.gif            {
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}

转载于:https://www.cnblogs.com/likang/archive/2009/07/16/1525072.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值