创建jQuery插件时,应该在$.fn
函数中返回什么?是return this
还是return $(this)
?我在搜索时遇到的一些网站使用前者,而其他网站使用后者:
return $(this)
:
http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx(提示10)return this
:
http://devheart.org/articles/tutorial-creating-a-jquery-plugin/ 有什么区别,首选是什么?
答案 0 :(得分:6)
直接位于$.fn
(jQuery构造函数的原型)上的函数内部,this
指的是函数运行的jQuery集合实例。返回this
是正确的。将其包含在$()
中只会给代码增加不必要的重量。
答案 1 :(得分:1)
this
是调用函数的jQuery对象; $(this)
是对象的浅表副本(另一个jQuery对象,指的是相同的DOM元素或原始持有的任何对象)。通常,this
应该更好,因为1)创建jQuery对象的副本需要大量的操作,2)您通常不会更改jQuery对象的属性。
现在,如果您做更改属性,那么两者的行为会有所不同:
var foo = $('#id');
var bar = $(foo);
foo.baz = 1;
bar.baz; // undefined
在这种情况下,返回$(this)
可能更有意义。例如,jQuery自己的add
函数在内部执行类似的操作:
var next = $(this);
// add parameter to next
return next;
因此,当您向jQuery对象添加元素时,它不会修改原始文件:
var foo = $('html');
var bar = foo.add('body');
bar.length; // 2
foo.length; // 1