3

我正在自学,目前正在处理 jQuery 插件。

我发现了一个样板,用于迭代页面上的元素,将 $(this) 分配给全局变量“obj”。

var obj = $(this);

因此,在我的功能中,我可以使用其中一个$(obj).someFunc()obj.someFunc()两个工作,但老实说,我真的不明白有什么区别。

那么问题来了,这两种方法的性能差异/好处是什么,我应该使用哪种方法?

4

4 回答 4

3

如果obj已经是一个 jQuery 对象,当你这样做的时候就是这种情况var obj = $(this);,那么就没有必要再次将它传递给 jQuery 。

$(obj)与 相同$($(this)),这显然是多余的。

查看jQuery的文档[docs]也有助于了解您可以传递给什么jQuery(别名$):

  • jQuery( selector [, context ] )
  • jQuery( element )
  • jQuery( elementArray )
  • jQuery( object )
  • jQuery( jQuery object )
  • jQuery()

您会看到传递 jQuery 对象是完全有效的,但它会克隆传递的对象,这可能不是您打算做的。


但是,可能值得指出的是,jQuery 插件方法内部,this已经是一个 jQuery 对象,因此您也不必将它传递给 jQuery。

更多信息在这里:http ://docs.jquery.com/Plugins/Authoring 。

于 2013-02-20T19:05:09.343 回答
1

如果obj.someFunc()and$(obj).someFunc()两者都有效并且someFunc是一个 jQuery 函数,那么这意味着它obj是一个 jQuery 对象。

在那种情况下$(obj)只是一个多余的调用。

于 2013-02-20T19:05:28.203 回答
0

区别非常简单 - 在第一种情况下$(obj).someFunc() 您每次都调用 $() 。在第二种情况下obj.someFunc(),您只调用它一次,并将其结果存储在一个名为obj的变量中

于 2013-02-20T19:09:45.463 回答
0

var obj = $(this);

就像您创建了一个 Class 的实例,您可以访问和使用obj,使用时更好:

`$(obj)`

是冗余初始化,就像您创建了另一个类实例并为其分配了相同的对象。所以没有使用或者我说使用它有什么好处。

于 2013-02-20T19:16:55.167 回答