在一个jQuery插件中,应该返回'this'还是'$(this)'?

5
2个回答

6
在一个位于jQuery构造函数的原型$.fn上的函数内部,this指的是该函数正在操作的jQuery集合实例。返回this是正确的做法。将其包装在$()中只会增加代码的不必要负担。
请参见jQuery插件编写指南的上下文部分

1
是的,那也是我想的。谢谢你的确认。 - pimvdb

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接