我在开发jQuery插件时看到的一些教程和示例倾向于返回
this.each(function () {
//Plugin code here
});
在实例化插件的函数末尾,但是我还没有看到其背后的任何原因,这似乎是每个人都遵循的标准。有人能启发我这种做法背后的原因吗?
编辑:为澄清起见,我的问题不是关于为什么要返回这个,而是为什么插件应该返回this.each。
我在开发jQuery插件时看到的一些教程和示例倾向于返回
this.each(function () {
//Plugin code here
});
在实例化插件的函数末尾,但是我还没有看到其背后的任何原因,这似乎是每个人都遵循的标准。有人能启发我这种做法背后的原因吗?
编辑:为澄清起见,我的问题不是关于为什么要返回这个,而是为什么插件应该返回this.each。
Answers:
使用选择器($('.myclass')
)过滤元素时,它只能匹配多个元素。
使用each
,您可以遍历所有匹配的元素,并将代码应用于所有这些元素。
return
是允许链接...
each
。
让我向您展示两个“等效”代码段,它们可以阐明您的问题:
用jQuery的“每个”功能:
(function($) {
$.fn.mangle = function(options) {
return this.each(function() {
$(this).append(' - ' + $(this).data('x'));
});
};
})(jQuery);
没有jQuery“每个”功能:
(function($) {
$.fn.mangle = function(options) {
var objs = this;
for (var i=0; i<objs.length; i++) {
var obj = objs[i];
$(obj).append(' - ' + $(obj).data('x'));
};
return this;
};
})(jQuery);
因此,基本上,each
函数用于施加一些代码的所有元素中包含的this
对象(如this
通常是指一组由一个jQuery选择返回的元素),并返回参照this
(如each
函数始终返回参考-to允许链接calls-)
作为一个方面说明:第二种方法(-for
环-比前一个更快(特别是在旧版浏览器)()-each
功能- )。
当您编写插件时,您将扩展jQuery对象,并且由于jQuery对象是一个序列,this.each(function () { });
因此您将返回该序列,以便对序列中的每一项执行插件。
each
然后返回this
,作为两个单独的语句。之所以有效,是因为它each
也会返回this
。
简而言之,它允许您利用链接的优势,因为它返回到现在为止已完成的所有操作,因此下一个.anyMethod()
可以对已更改/已修改的元素进行操作。
此外,请查看这些链接,它们将为您提供有关jQuery插件开发的大量信息。
http://www.webresourcesdepot.com/jquery-plugin-development-10-tutorials-to-get-started/
http://www.learningjquery.com/2007/10/a-plugin-development-pattern
http:// /snook.ca/archives/javascript/jquery_plugin
这里有一个不错的基于Web的应用程序,可帮助您快速启动jQuery插件。 http://starter.pixelgraphics.us/
this
将是一个更好的想法..