Com o Jquery, preciso selecionar apenas os primeiros "n" itens da página, por exemplo, os primeiros 20 links, em vez de selecionar todos eles com o costume
$("a")
Parece simples, mas o manual do jQuery não tem evidências de algo assim.
Embora a :lt(20)abordagem pareça muito mais limpa, o uso da fatia é muito mais eficiente se você tiver um grande resultado definido para começar. Infelizmente, ao avaliar ": lt" e outros seletores de posição, o jQuery percorre todo o conjunto , mesmo que esteja apenas obtendo o primeiro elemento. Eu escrevi mais sobre isso no meu blog aqui: spadgos.com/?p=51
nickf
1
Obrigado, um requisito paralelo do meu pedido era sobre performances, então essa é a resposta certa para mim. Obrigado aos outros por apontar o seletor: lt também.
830 Omiod
3
Comentário informativo por @nickf, mas o link do blog e um link gráfico não parecem funcionar
Fractalf
1
Não é possível editar agora, desculpe - basicamente, o uso do slice foi muito mais rápido.
nickf 29/10
92
Use o pseudo-seletor lt:
$("a:lt(n)")
Isso corresponde aos elementos anteriores ao enésimo (o enésimo elemento é excluído). A numeração começa em 0.
Notas adicionais:
Como: lt () é uma extensão jQuery e não faz parte da especificação CSS, as consultas usando: lt () não podem tirar proveito do aumento de desempenho fornecido pelo método DOM querySelectorAll () nativo do DOM. Para um melhor desempenho em navegadores modernos, use $ ("your-pure-css-selector"). Slice (0, index).
Então use $("selector").slice(from, to)para melhores performances.
:lt(20)
abordagem pareça muito mais limpa, o uso da fatia é muito mais eficiente se você tiver um grande resultado definido para começar. Infelizmente, ao avaliar ": lt" e outros seletores de posição, o jQuery percorre todo o conjunto , mesmo que esteja apenas obtendo o primeiro elemento. Eu escrevi mais sobre isso no meu blog aqui: spadgos.com/?p=51Use o pseudo-seletor lt:
Isso corresponde aos elementos anteriores ao enésimo (o enésimo elemento é excluído). A numeração começa em 0.
fonte
Eu encontrei esta nota no final dos documentos lt () :
Então use
$("selector").slice(from, to)
para melhores performances.fonte
Experimente o seletor: lt: http://docs.jquery.com/Selectors/lt#index
fonte
.slice () nem sempre é melhor. No meu caso, com o jQuery 1.7 no Chrome 36, o .slice (0, 20) falhou com o erro:
RangeError: tamanho máximo da pilha de chamadas excedido
Eu descobri que: lt (20) funcionou sem erros neste caso. Eu provavelmente tinha dezenas de milhares de elementos correspondentes.
fonte
Documentação JQuery
fonte