我正在自学,目前正在处理jQuery插件。
我发现了一个锅炉板,用于迭代页面上的元素,将$(this)分配给全局变量'obj'。
var obj = $(this);
作为我的功能的结果,我可以使用$(obj).someFunc()
或obj.someFunc()
两者都工作,但如果诚实,我真的不明白它的区别。
所以问题是,这两种方法的性能差异/好处是什么?我应该使用哪种方法?
答案 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。
答案 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)`
是冗余初始化,就像你创建了另一个类实例并为其分配了相同的对象。所以没有使用或者说使用它有任何好处。