2011-03-26 91 views

回答

6

直接在$.fn(jQuery构造函数的原型)上生活的函数内部,this引用函数在其上运行的jQuery集合实例。返回this是正确的。用$()包装它只会增加不必要的重量给你的代码。

请参阅Context section of jQuery plugin authoring guidelines

+1

是的,这是我也想过。感谢您的确认。 – pimvdb 2011-03-26 19:00:20

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