jQuery cuenta elementos por clase: ¿cuál es la mejor manera de implementar esto?

Resuelto 133794m3r asked hace 14 años • 6 respuestas

Lo que intento hacer es contar todos los elementos de la página actual con la misma clase y luego los usaré para agregarlos a un nombre para un formulario de entrada. Básicamente, estoy permitiendo a los usuarios hacer clic en un <span>y luego, al hacerlo, agregar otro para obtener más elementos del mismo tipo. Pero no se me ocurre una manera de contarlos todos simplemente con jQuery/JavaScript.

Luego iba a nombrar el elemento como algo así name="whatever(total+1)". Si alguien tiene una forma sencilla de hacerlo, estaría muy agradecido ya que JavaScript no es exactamente mi lengua nativa.

133794m3r avatar Apr 28 '10 13:04 133794m3r
Aceptado

Debería ser algo como:

// Gets the number of elements with class yourClass
var numItems = $('.yourclass').length




Como nota al margen, a menudo es beneficioso verificar la propiedad de longitud antes de encadenar muchas llamadas a funciones en un objeto jQuery, para asegurarnos de que realmente tenemos algo de trabajo que realizar. Vea abajo:

var $items = $('.myclass');
// Ensure we have at least one element in $items before setting up animations
// and other resource intensive tasks.
if($items.length)
{
  $items.animate(/* */)
    // It might also be appropriate to check that we have 2 or more
    // elements returned by the filter-call before animating this subset of 
    // items.
    .filter(':odd')
      .animate(/* */)
      .end()
    .promise()
    .then(function () { 
       $items.addClass('all-done');
    });
}
PatrikAkerstrand avatar Apr 28 '2010 06:04 PatrikAkerstrand

Contar el número de elementos que hacen referencia a una misma clase es tan sencillo como esto

<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
        <script type="text/javascript">

            $(document).ready(function() {
                alert( $(".red").length );
            });

        </script>
    </head>
    <body>

        <p class="red">Test</p>
        <p class="red">Test</p>
        <p class="red anotherclass">Test</p>
        <p class="red">Test</p>
        <p class="red">Test</p>
        <p class="red anotherclass">Test</p>
    </body>
</html>
Jonathan avatar Apr 28 '2010 06:04 Jonathan
var count = $('.' + myclassname).length;
Max Shawabkeh avatar Apr 28 '2010 06:04 Max Shawabkeh

HTML:

<div>
    <img src='' class='class' />
    <img src='' class='class' />
    <img src='' class='class' />
</div>

    

JavaScript:

var numItems = $('.class').length; 
        
alert(numItems);

Demostración de violín para div solo interior

Nilesh Darade avatar Aug 22 '2014 06:08 Nilesh Darade

para contar:

$('.yourClass').length;

debería funcionar bien.

almacenar en una variable es tan fácil como:

var count = $('.yourClass').length;

Alastair Pitts avatar Apr 28 '2010 06:04 Alastair Pitts