jQuery: conta o número de elementos da lista?

134

Eu tenho uma lista que é gerada a partir de algum código do lado do servidor, antes de adicionar coisas extras a ela com o jQuery, preciso descobrir quantos itens já estão nela.

<ul id="mylist">
    <li>Element 1</li>
    <li>Element 2</li>
</ul>
Tom
fonte

Respostas:

225

Experimentar:

$("#mylist li").length

Apenas curioso: por que você precisa saber o tamanho? Você não pode simplesmente usar:

$("#mylist").append("<li>New list item</li>");

?

cleto
fonte
3
Estou usando o acréscimo para adicionar os novos, mas tenho um limite no número de itens que podem estar na lista. Nesse estado, o usuário ainda pode adicionar até um máximo de 4 itens, mas dois podem ter sido do estado anterior. :) #
Tom
35
Observe que os documentos do jQyery recomendam o uso de .lengthover .size()para evitar a sobrecarga de uma chamada de função. api.jquery.com/size
Joe
4
size () foi descontinuado no jquery 1.8 e diz para usar length () agora.
gloomy.penguin
8
@ gloomy.penguin Note que isso .lengthnão é uma função.
Hexacyanide
Preciso da contagem <li> para recalcular a largura do elemento em tempo real.
Hristo
51
var listItems = $("#myList").children();

var count = listItems.length;

Claro que você pode condensar isso com

var count = $("#myList").children().length;

Para obter mais ajuda com o jQuery, http://docs.jquery.com/Main_Page é um bom lugar para começar.

Nick Allen
fonte
5
só para garantir, faça $ ("# myList"). children ("li"). length; Se você adicionar outros itens à lista por qualquer motivo, não esquecerá esta pequena linha de código.
SgtPooki
10

Você tem o mesmo resultado ao chamar o método .size () ou a propriedade .length, mas a propriedade .length é preferida porque não possui a sobrecarga de uma chamada de função. Então, a melhor maneira:

$("#mylist li").length
Alex Nguyen
fonte
4

Eu acho que isso deve fazer:

var ct = $('#mylist').children().size(); 
Andrew Barrett
fonte
4

e, claro, o seguinte:

var count = $("#myList").children().length;

pode ser condensado até: (removendo o 'var' que não é necessário para definir uma variável)

count = $("#myList").children().length;

no entanto, isso é mais limpo:

count = $("#mylist li").size();
ROARSTAR
fonte
2
Esse método também não conta contagens de tags li nos elementos ul filhos do ul superior?
Atripes
2
Dizer "'var' não é necessário para definir uma variável" é simplista demais. Se você não usar 'var', todas as suas variáveis ​​serão globais. Veja stackoverflow.com/questions/1470488/…
Rafael Almeida
3

experimentar

$("#mylist").children().length
Nui_CpE
fonte
1

Contar o número de elementos da lista

alert($("#mylist > li").length);
M.Ganji
fonte
1

Outra abordagem para contar o número de elementos da lista:

var num = $("#mylist").find("li").length;
console.log(num);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="mylist">
  <li>Element 1</li>
  <li>Element 2</li>
  <li>Element 3</li>
  <li>Element 4</li>
  <li>Element 5</li>
</ul>

Penny Liu
fonte
0

$("button").click(function(){
    alert($("li").length);
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
  <meta charset="utf-8">
  <title>Count the number of specific elements</title>
</head>
<body>
<ul>
  <li>List - 1</li>
  <li>List - 2</li>
  <li>List - 3</li>
</ul>
  <button>Display the number of li elements</button>
</body>
</html>

Bashirpour
fonte