【问题标题】:Is the order objects are return by a jQuery selector specified?订单对象是否由指定的 jQuery 选择器返回?
【发布时间】:2010-12-10 19:23:53
【问题描述】:

所有 jQuery 选择器都返回一个对象数组。这些对象是否总是与它们在 HTML 中的顺序相同?我可以依靠这个吗?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    是的,它们总是按照它们在 DOM 中的顺序排列。

    【讨论】:

      【解决方案2】:

      可能按照找到它们的顺序,选择器几乎遍历 DOM,当它找到匹配的元素时,将其放入数组中。

      您可以通过说 5 个 id 为“textbox_n”的文本框进行测试,其中 n 是一个数字,然后提醒列表并查看您得到了什么?

      【讨论】:

        【解决方案3】:

        是的。
        jQuery 1.3.2 release notes 说:

        按文档顺序返回的元素

        这是对 jQuery 选择器引擎的更改,它将返回的结果重新排序为文档顺序,而不是选择器传入的顺序。完成此更改是为了符合 Selectors API规范(jQuery 在支持它的浏览器中内部使用)。

        jQuery 1.3 不是这种情况:

        “a, b, c”样式选择器的顺序可能会改变。支持 querySelectorAll 的浏览器(Safari、Firefox 3.5+、Opera 10+、IE 8+)将按文档顺序返回元素,其他浏览器(当前)将按指定顺序返回它们。在 1.3.2 及更高版本中,所有以逗号分隔的选择器都将按文档顺序返回。

        【讨论】:

        • 有趣的是它确实在发行说明中,而且也很有意义,但是有人忘记将它也放在api.jquery.com/multiple-selector 中 - 亲爱的,请也添加此信息:) !跨度>
        • 答案真的很老了有没有人找到更新的链接?
        • @DanielLeach - 我更新了链接,谢谢。这种行为应该仍然是正确的,它也是最新版本的文档:api.jquery.com/multiple-selector
        【解决方案4】:

        可能有一些例外,例如来自 prevAll() 文档:

        "给定一个代表一组DOM元素的jQuery对象,.prevAll()方法在DOM树中搜索这些元素的前辈,并从匹配的元素中构造一个新的jQuery对象;元素是按从最近的兄弟开始的顺序返回。”

        http://api.jquery.com/prevAll/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-23
          • 2017-07-02
          • 1970-01-01
          • 2012-10-11
          • 2018-10-19
          • 2021-10-24
          • 2022-10-02
          • 2016-01-28
          相关资源
          最近更新 更多