创建一个空的jQuery对象:$({}) 或 $()。

11

我看到过以下两种变量初始化方式来创建一个空的jQuery对象。使用其中一种相比另一种有什么主要区别或优势吗?

var a = $({});
var b = $();

我想我也见过 $([])。不过可能我记错了... - Ian
你需要它来做什么? - zerkms
是的,我也看到过$([])。明确一下,我确实在询问$({})。例如(https://gist.github.com/661855) - John Haldson
2个回答

27
如果你指的是$([]),那是从旧版本中调用$()等同于$(document)(这是一个未记录的功能)。所以要获取一个空集合,你需要调用$([])。这在jQuery 1.4中已更改;现在$()的文档功能是返回一个空集合。
对象传递给jQuery构造函数是完全不同的事情。$({})并不会创建一个空的jQuery对象。它创建了一个长度为1的jQuery对象,选定的项是对象本身。
将JS对象传递给jQuery构造函数可以让你利用jQuery的一个更加深奥的功能:绑定和触发(非DOM)对象上的事件。
例如:
var obj = { some: 'stuff' };

$(obj).on('someevent', function() { ... });

$(obj).trigger('someevent');

无论如何,如果您的目标是实例化一个新的、空的jQuery对象,请使用$()

将JS对象传递给jQuery构造函数可以利用jQuery的一个更加深奥的特性:在(非DOM)对象上绑定和触发事件。为什么使用$({})有助于绑定和触发事件呢? - jack blank
它提供了一个 jQuery 对象,您可以在其上监听/触发任意事件。 - josh3736
谢谢您的回复。所以在您的答案中,您说所选项目只是一个虚构的空对象($()内部的{})。我一直在看pub/subs https://gist.github.com/cowboy/661855。 为什么他们要使用这个空对象?他们可以使用随机元素$(.element)代替吗?很抱歉我感到困惑。使用空对象对于事件发射有好处吗?我是pub/sub的新手。为什么$({})对于pub/sub很好?请回答。谢谢 - jack blank
什么都不会被放入空对象中。它只是用来处理事件的吗? - jack blank

3
我想您的意思是:
var a = $([]); //<- array not object
var b = $();

我不知道有什么优点,第一个是旧版本,从1.4开始您可以使用后面的版本。


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