在jQuery中有什么… var myVar = $(); …做?

var myVar = $( [] ); 

这个jQuery做了什么?

它是否将变量初始化为空的jQuery集? 我搜索过jQuery文档,但没有找到这种语法的解释。

摘自jQuery docs http://api.jquery.com/jQuery/

返回空集 –

从jQuery 1.4开始,调用不带参数的jQuery()方法会返回一个空的jQuery集(长度属性为0)。 在以前版本的jQuery中,这将返回包含文档节点的集合。

那么$( [] )可以成为返回空jQuery集的遗留方法还是做一些完全不同的事情?

虽然有不同的方式来解释“遗产”(如在pst的评论中),但表达式是精确记录的。 我们知道$ function和jQuery是一样的,所以查看jQuery我们看到它可以接受几种不同forms的参数:

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

接受元素数组的那个记录如下:

  • elementArray:一个数组,包含一组要包装在jQuery对象中的DOM元素。

这回答了你的问题“那么$( [] )可以作为返回空jQuery集的遗留方法,还是会做一些完全不同的事情?” 从某种意义上说,不,它没有做任何不同的事情。 你得到一个jQuery对象,其中包含空数组中的所有元素。 全是零。

正如你在问题中提到的,从1.4开始,普通的’ $()给你空集,所以我认为它可能是现在做事的首选方式。 也就是说, $([])很好,很明确,仍然支持。

$(obj)允许你创建一个空的jQuery对象,但这与$()不同

例如:我有一个名称空间的解决方案,需要具有基于集中对象采取行动的自定义事件。 我编写了自己的EventHandler类,它基本上包含了私有$({})

这允许我有一个可以充当我的事件持有者和触发器的对象。 我在EventHandler类中公开了bind(),unbind()和trigger()。

另一方面, $()不允许绑定和触发,因为没有基础对象。 我不完全确定他们这样做的想法,因为将“默认”或“空”jQuery对象变为$({})会更有意义

长话短说: $({})确实有$()没有的东西。 但是$([])$()似乎从我做过的最小量的测试中起了同样的作用。 也许$(new Array())行为仍然不同,但我不在乎研究它。

用例子编辑:

 var testA = $(); testA.bind('customEvent', function () { alert('empty custom'); }); testA.trigger('customEvent'); // will not get an alert var testB = $({}); testB.bind('customEvent', function() { alert('object custom'); }); testB.trigger('customEvent'); // will get an alert var testC = $([]); testC.bind('customEvent', function () { alert('array custom'); }); testC.trigger('customEvent'); // acts like testA