好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

用类与原型写一个组件(三)--学习笔记_html/css_WEB-ITnose

上一篇中,我们为组件添加了“删除一条item”的功能,现在,再增加一个“增加一条item”的功能。

首先,在页面中增加一个按钮,用来触发添加功能(红框中的内容是对比上一篇新加的代码)。

在main.js中绑定按钮的单击事件,触发add函数。

再在smartList.js里写add函数。

 1   // 增加一条数据 2   SmartList.prototype.add = function (data) { 3  4     var isExist = false; 5  6     // 判断id是否已存在 7     $.each(this.list, function (i, val) { 8       if (val.id === data.id) { 9         isExist = true;10         return false; // 退出循环11       }12     });13 14     if (isExist) {15       console.log('SmartList: id ' + data.id + ' 已存在,无法添加');16       return;17     }18 19     this.list.push(data);20     this._genItem(data).appendTo(this.element);21   }; 

现在可以注意到,$.each(this.list, function (i, val) {...}这行代码重复了,在add里用到了,在remove里也用到了,所以,我们是否可以写一个函数来代替这段重复的代码呢?于是,写一个_getById方法如下:

 1   SmartList.prototype._getById = function (id, callback) { 2     var self = this; 3     var data = null; 4  5     $.each(this.list, function (i, val) { 6       if (val.id === id) { 7         data = val; 8         if (callback && typeof callback === 'function') 9           callback(i, data);10         return false;11       }12     });13 14     return data;15   }; 

现在可以用_getById方法来改写remove和add方法。改写前后对比如下:

完整代码如下:

index.html:

 1   2   3     4    Flexx  5    6    7      8      9     10     11     12  13  14   

15

Flexx Library

16 17

18

19

20

21 22 23 24

查看更多关于用类与原型写一个组件(三)--学习笔记_html/css_WEB-ITnose的详细内容...

  阅读:42次