2011-03-26 86 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