我正在构建一个插件,“selectList”是从具有这种结构的给定对象数组构建的:
var data = [
{"value": 1, "name": "Item 1", "isSelected": true},
{"value": 2, "name": "Item 2", "isSelected": false}
];
然后,您可以单击列表的元素以选择或取消选择它们(所选项目添加“活动”类)。我想在单击“保存”按钮时调用公共方法。此方法将更新收到的数组并使用所选项更新它。
为此,我尝试了这种方法:
$.fn.selectList.getData = function (elem, data) {
var items = elem.children('ul').children('li').not('.sl-title');
items.each(function (index) {
if (this.hasClass('active')) {
data[index].isSelected = true;
} else {
data[index].isSelected = false;
}
});
return data;
}
这就是我在插件中声明变量的方式:
;(function ($) {
"use strict";
$.fn.selectList = function (settings) {
var opts = $.extend({}, $.fn.selectList.defaults, settings);
return this.each(function () {
var _self = $(this),
_data = opts.data;
initList(_self);
if (_data) {
buildList(_self, _data);
} else {
noData(_self, opts.noDataMessage);
}
});
};
...
我不确定将_self
和_data
参数传递给公共方法的位置,因为“保存”按钮不在插件内。有帮助吗?