在jQuery插件中引用时使用哪个 - $(obj)vs obj

时间:2013-02-20 19:02:55

标签: javascript jquery

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

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

var obj = $(this);

作为我的功能的结果,我可以使用$(obj).someFunc()obj.someFunc()两者都工作,但如果诚实,我真的不明白它的区别。

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

4 个答案:

答案 0 :(得分:3)

如果obj已经是jQuery对象(执行var obj = $(this);时就是这种情况),则无需再次将其传递给jQuery

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

查看jQuery's documentation [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

答案 1 :(得分:1)

如果obj.someFunc()$(obj).someFunc()都有效且someFunc是jQuery函数,则表示obj是jQuery对象。

在这种情况下,$(obj)只是一个冗余电话。

答案 2 :(得分:0)

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

的变量中

答案 3 :(得分:0)

var obj = $(this);

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

`$(obj)`

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