如何将jQuery .find()函数的结果转换为数组?

时间:2011-09-22 10:26:15

标签: javascript jquery javascript-events jquery-selectors

jQuery .find()方法返回什么? 对象数组列表对象?

如果它返回一个包含所有匹配元素的对象。如何将此对象转换为数组?

如果它返回一个元素数组,为什么$(xml).find("DATE").sort(mySortFunc);不起作用,似乎jquery .find()返回一个无法应用javascript sort()方法的对象,该方法应该应用于数组

通常,我需要按$(xml).find("DATE")对查找的对象进行排序,但是当我使用sort函数时,会引发无法解析对象的错误。

3 个答案:

答案 0 :(得分:27)

大多数jQuery方法返回一个jQuery对象,可以像访问数组一样访问它(例如它有一个.length属性,可以使用方括号表示法访问元素([0]) ,它支持一些数组方法(slice()))。

jQuery有一个名为toArray()的方法,可用于将jQuery对象转换为真实数组。

您也可以使用不带参数的get()来达到相同的效果(并节省几次按键)。

将来,您可以签出jQuery API,并在相关文档中列出所有jQuery方法的返回类型(例如,对于find(),返回类型为“jQuery”)

答案 1 :(得分:6)

如果在没有参数的jQuery对象上调用.get(),它将返回一个常规的DOM元素数组。

答案 2 :(得分:2)

jQuery已经像一个数组,因此你可以将类似数组的功能应用到它。

尝试更改

$(xml).find("DATE").sort(mySortFunc);

Array.prototype.sort.apply($(xml).find("DATE"), mySortFunc);

你应该得到你需要的东西