jQuery / Propriedade / .length - Contar elementos selecionados
No jQuery, .length é uma propriedade numérica que informa quantos elementos existem em um objeto jQuery. Leia sem parênteses, como $("#tasks > li").length; sem correspondências, o valor é zero. Para contar o documento atual após incluir ou remover elementos, execute a seleção novamente.
Contar e verificar a existência
A documentação de .length trata do conjunto selecionado, não do texto dentro de um elemento nem de seus filhos. Elementos ocultos contam se correspondem ao seletor. Restrinja a condição para contar apenas o subconjunto necessário.
| Expressão | Verificação |
|---|---|
| $("#tasks > li").length | Número de li filhos diretos |
| $("#tasks > li.done").length | Número de li com done |
| $("#tasks > li").length > 0 | Existe ao menos uma correspondência |
| $("#missing-item").length === 0 | Não existe elemento com esse ID |
if ($("#missing-item")) não verifica existência. Mesmo sem correspondências, um objeto jQuery é criado, e o objeto é avaliado como verdadeiro. Compare .length com zero. A propriedade não é função: chamar .length() provoca TypeError.
Exemplo completo com inclusão e remoção
Salve todo o código em UTF-8 como length-demo.html e abra no navegador. Não precisa instalar nada, mas é necessário internet para carregar o arquivo oficial do jQuery pela rede de distribuição de conteúdo, ou CDN. O código usa 4.0.0. Contagem, existência, inclusão, remoção e restauração foram executadas com 3.7.1 e 4.0.0.
A lista começa com Alpha e Beta. CSS oculta Beta, mas ele permanece no documento com a classe done. current conta a seleção nova, completed seus elementos done e saved o conjunto salvo no início.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Count selected list elements</title>
<style>
body { font: 16px/1.6 sans-serif; margin: 24px; }
li { padding: 8px; border-bottom: 1px solid #ddd; }
.is-hidden { display: none; }
button { padding: 8px; margin: 4px; }
#result { white-space: pre-line; }
</style>
<script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
</head>
<body>
<h1>Count selected list elements</h1>
<p>One initial item is hidden but remains in the document.</p>
<ul id="tasks">
<li id="alpha">Alpha</li>
<li id="beta" class="done is-hidden">Beta</li>
</ul>
<button type="button" id="add">Add item</button>
<button type="button" id="remove">Remove last</button>
<button type="button" id="reset">Reset</button>
<p id="result" aria-live="polite"></p>
<script>
$(function () {
const initialHtml = $("#tasks").html();
const $saved = $("#tasks > li");
let next = 3;
function refresh() {
const $current = $("#tasks > li");
$("#result").text(
`current=${$current.length}
` +
`completed=${$current.filter(".done").length}
` +
`saved=${$saved.length}
` +
`present=${$current.length > 0 ? "yes" : "no"}`
);
}
$("#add").on("click", function () {
$("<li>").text("New " + next++).appendTo("#tasks");
refresh();
});
$("#remove").on("click", function () {
$("#tasks > li").last().remove();
refresh();
});
$("#reset").on("click", function () {
$("#tasks").html(initialHtml);
next = 3;
refresh();
});
refresh();
});
</script>
</body>
</html>
Apenas Alpha aparece, mas .length conta os dois li. A saída inicial é:
current=2
completed=1
saved=2
present=yes
- Add item inclui New 3: current passa a 3, completed permanece 1 e saved 2.
- Remove last remove o item novo: current volta a 2. Outro clique remove Beta oculto: current fica 1 e completed 0.
- O clique seguinte remove Alpha: current fica 0 e present no. Outros cliques mantêm zero porque não resta nada a remover.
- Reset restaura o HTML inicial, reinicia a numeração em 3 e conta novamente. Os dois elementos, o estado oculto e done retornam.
O exemplo restaura HTML inicial fixo. Em uma tela editável real, substituir todo o HTML também apagaria alterações do usuário. Defina o escopo de restauração conforme os dados que precisam ser preservados.
Quantidade de elementos e comprimento do texto
Após Reset, execute este trecho no console de desenvolvimento. O exemplo não possui o ID missing-item.
if ($("#missing-item").length === 0) {
console.log("not found");
}
console.log($("#tasks > li").length);
console.log($("#tasks > li").first().text().length);
not found
2
5
2 conta os li selecionados; 5 é o comprimento da string Alpha do primeiro elemento. .text() retorna uma string, então o .length seguinte é sua propriedade. O mesmo nome tem significado diferente conforme se aplica a um objeto jQuery ou a uma string.
Nova consulta, momento de execução e código antigo
saved permanece 2 porque o conjunto inicial é mantido. Remover seus elementos do documento não altera automaticamente seu comprimento. Reset cria novos elementos sem substituir saved. Para existência e quantidade atuais, faça uma nova consulta, como refresh.
Selecionar cedo demais pode retornar zero antes de criar os elementos. A função de preparação do DOM $(function () { ... }) aguarda o modelo de objetos do documento, DOM, poder ser manipulado. Elementos assíncronos podem chegar depois: conte após concluir a inserção.
O antigo método .size() foi removido no jQuery 3.0. Substitua por .length. Para valores inesperados, examine o carregamento em Network, os erros e a versão em Console, o escopo, as classes, os IDs e a conclusão da inserção.




