【问题标题】:How to convert the result of jQuery .find() function to an array?如何将 jQuery .find() 函数的结果转换为数组?
【发布时间】:2011-09-22 10:26:15
【问题描述】:

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

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

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

一般情况下,我需要对通过$(xml).find("DATE")找到的对象进行排序,但是当我使用排序功能时,会出现无法解析对象的错误。

【问题讨论】:

标签: javascript jquery jquery-selectors


【解决方案1】:

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

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

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

以后,您可以查看jQuery API,所有jQuery方法的返回类型都列在相关文档中(例如find(),返回类型是“jQuery”)

【讨论】:

  • 支持哪些数组方法,哪些不支持?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    jQuery 已经像数组一样工作,因此您可以将类似数组的功能应用到它。

    尝试改变

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

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

    你应该得到你需要的东西

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-22
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 2023-01-29
      • 1970-01-01
      • 2015-05-21
      • 2014-04-17
      相关资源
      最近更新 更多