为什么jQuery接受数组作为参数?

时间:2016-02-12 16:17:57

标签: javascript jquery

这段代码执行得很好:

$([ $('<div>'), $('<div>') ]);

并返回一个使用jQuery属性扩展的数组(即eachfind和所有其他$.fn.*函数。)

但是,它既不是DOMElement也不是函数,因此该对象不能用于DOM操作。

为什么jQuery接受数组作为参数?

编辑(因为似乎很多人不明白为什么我要问这个)

var els = $([ $('<div>'), $('<div>') ]);

$('body').append( els );
// ERR : Uncaught TypeError: Cannot read property 'ownerDocument' of undefined

我问这个问题,因为这个功能似乎与jQuery API的其余部分不一致。

更新

似乎这issue has been addressed(谢谢你@Stryner找到了这一点)并且由于显而易见的原因(性能和易于发生WTF)而决定不实现此功能。

1 个答案:

答案 0 :(得分:6)

元素的文档shows it accepts an array

var els = $([
   document.createElement("div"),
   document.createElement("div") 
]);

$('body').append( els );

......工作正常。

您的特定示例失败,因为您没有传递元素数组。似乎jQuery只是(可以说)没有足够的错误检查。