我正在编写一个插件,很难让它实例化多个元素。我把[the code]放在jsfiddle中。特别是问题是对.each()的调用可能失败了:
$.fn.Image = function (options) {
return this.each(function () {
(new $.Image(this, options));
});
};
我从看过其他插件的编写方式开始,但我不确定我是否理解它,特别是为什么使用“new”以及调用时如何产生数组:
var imgs = $('img').Image();
有人可以建议正确的做法是什么?
- 编辑 -
也许我离我更近一点了。我试过这个:$.fn.Image = function (options) {
var ret = [];
this.each(function () {
ret[ret.length] = $.Image(this, options);
});
return ret;
};
至少返回一个对象数组,但是我的调用:
img.toggle();
失败,因为返回的是一个对象数组(可以使用.Image()调用)...所以我猜测$ .fn.Image()需要返回的是一个单独的对象,它以某种方式存储它元素......然后如何使所有方法迭代?我不明白!
答案 0 :(得分:1)
不确定你在追求什么,但这样的事情呢?
$.fn.Image = function (options) {
$(this).each(function (i,e) {
$.fn.Image(e,options);
});
this.testing = function(a){
if (typeof a == "undefined") a = $(this).text();
alert(a);
return this;
}
return this;
};
var a = $('ul').Image().addClass('working');
a.testing("sss");
$('ul li:first-child').testing().addClass('working');
答案 1 :(得分:0)
而不是
return this.each(...)
试
return $(this).each(...)