在jQuery中做什么...... var myVar = $([]); ......做?

时间:2011-08-20 18:46:07

标签: jquery

var myVar = $( [] );

这个jQuery做什么?

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

  

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

     

返回空集 -

     

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

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

2 个答案:

答案 0 :(得分:1)

虽然有不同的方式来解释“遗产”(如在pst的评论中),但表达式已准确记录。我们知道$函数与jQuery相同,因此查找jQuery我们看到它可以接受几种不同形式的参数:

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

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

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

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

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

答案 1 :(得分:1)

$(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