var myVar = $( [] );
这个jQuery做什么?
它是否将变量初始化为空的jQuery集?我搜索过jQuery文档,但没有找到这种语法的解释。
摘自jQuery docs http://api.jquery.com/jQuery/
返回空集 -
从jQuery 1.4开始,调用不带参数的jQuery()方法会返回一个空的jQuery集(长度属性为0)。在以前的jQuery版本中,这将返回一个包含文档节点的集合。
那么$( [] )
可以成为返回空jQuery集的遗留方法,还是会做一些完全不同的事情呢?
答案 0 :(得分:1)
虽然有不同的方式来解释“遗产”(如在pst的评论中),但表达式已准确记录。我们知道$
函数与jQuery
相同,因此查找jQuery
我们看到它可以接受几种不同形式的参数:
jQuery( selector, [context] )
jQuery( element )
jQuery( elementArray )
jQuery( jQueryObject )
jQuery()
接受元素数组的那个记录如下:
这回答了你的问题“那么$( [] )
可以成为返回空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