Os objetos de pedido são retornados por um seletor jQuery especificado?


92

Todos os seletores jQuery retornam uma matriz de objetos. Esses objetos estão sempre na mesma ordem em que estão no HTML? Posso contar com isso?

Respostas:


114

Sim.
As notas da versão do jQuery 1.3.2 dizem:

Elementos devolvidos na ordem do documento

Esta é uma mudança no mecanismo de seleção do jQuery que reordena os resultados retornados para que fiquem na ordem do documento, em vez da ordem em que os seletores foram passados. Essa mudança foi feita para estar em conformidade com a especificação da API dos seletores (que jQuery usa, internamente, em navegadores que o suportam).

Este não foi o caso no jQuery 1.3 :

A ordem dos seletores de estilo "a, b, c" pode mudar. Os navegadores que suportam querySelectorAll (Safari, Firefox 3.5+, Opera 10+, IE 8+) retornarão os elementos na ordem do documento, outros navegadores irão (atualmente) retorná-los na ordem especificada. Na versão 1.3.2 e posterior, todos os seletores separados por vírgula serão retornados na ordem do documento.


1
Interessante que está realmente nas notas de lançamento, e também faz sentido, mas alguém se esqueceu de colocá-lo também em api.jquery.com/multiple-selector - querido alguém, por favor, adicione esta informação aqui também :)!
jave.web

8

Pode haver algumas exceções, por exemplo, da documentação prevAll ():

"Dado um objeto jQuery que representa um conjunto de elementos DOM, o método .prevAll () pesquisa os predecessores desses elementos na árvore DOM e constrói um novo objeto jQuery a partir dos elementos correspondentes; os elementos são retornados em ordem, começando com o irmão mais próximo . "

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


3

Sim, eles estão sempre na ordem em que estão no DOM.


0

Provavelmente na ordem em que os encontra, um seletor praticamente atravessa o DOM e, quando encontra um elemento correspondente, o coloca em um array.

Você poderia talvez fazer um teste tendo, digamos, 5 caixas de texto com id's de "textbox_n" onde n é um número, então alertar a lista e ver o que obtém?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.