【发布时间】:2010-12-10 19:23:53
【问题描述】:
所有 jQuery 选择器都返回一个对象数组。这些对象是否总是与它们在 HTML 中的顺序相同?我可以依靠这个吗?
【问题讨论】:
标签: jquery
所有 jQuery 选择器都返回一个对象数组。这些对象是否总是与它们在 HTML 中的顺序相同?我可以依靠这个吗?
【问题讨论】:
标签: jquery
是的,它们总是按照它们在 DOM 中的顺序排列。
【讨论】:
可能按照找到它们的顺序,选择器几乎遍历 DOM,当它找到匹配的元素时,将其放入数组中。
您可以通过说 5 个 id 为“textbox_n”的文本框进行测试,其中 n 是一个数字,然后提醒列表并查看您得到了什么?
【讨论】:
是的。
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 及更高版本中,所有以逗号分隔的选择器都将按文档顺序返回。
【讨论】:
可能有一些例外,例如来自 prevAll() 文档:
"给定一个代表一组DOM元素的jQuery对象,.prevAll()方法在DOM树中搜索这些元素的前辈,并从匹配的元素中构造一个新的jQuery对象;元素是按从最近的兄弟开始的顺序返回。”
【讨论】: