jQuery zliczanie elementów według klas - jaki jest najlepszy sposób na to?


373

Próbuję zliczyć wszystkie elementy na bieżącej stronie z tą samą klasą, a następnie użyję go, aby dodać go do nazwy formularza wejściowego. Zasadniczo zezwalam użytkownikom na klikanie, <span>a następnie dodawanie kolejnych, aby uzyskać więcej tego samego rodzaju elementów. Ale nie mogę wymyślić sposobu, aby policzyć je wszystkie po prostu za pomocą jQuery / JavaScript.

Chciałem wtedy nazwać ten przedmiot czymś w rodzaju name="whatever(total+1)", jeśli ktoś ma prosty sposób, by to zrobić, byłbym bardzo wdzięczny, ponieważ JavaScript nie jest moim ojczystym językiem.


3
pierwsza osoba, którą zobaczyłem, dostało to i nie wiedziałem, że jest to prosta długość $ ('. classname'). Gdybym miał więcej do zaoferowania, dałbym. Nie pomyślałem, żeby spróbować w ten sposób. Ustawiłem trochę zmienne i proste rzeczy, takie jak dołączanie dokumentów itp. Wow, czuję się teraz dość głupi, powinienem pomyśleć, aby poszukać polecenia .length (), aby zobaczyć, co napisano ... dzięki wszystkim btw.
133794m3r

26
+1 Za zadawanie pytań takich jak Yoda
jbnunn

6
@jbnunn co to jest Yoda?
shasi kanth

Odpowiedzi:


691

Powinno być po prostu coś takiego:

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




Na marginesie, często korzystne jest sprawdzenie właściwości length przed połączeniem wielu wywołań funkcji w obiekcie jQuery, aby upewnić się, że rzeczywiście mamy trochę pracy do wykonania. Patrz poniżej:

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');
    });
}

4
Chciałem tylko powiedzieć, że działa to również z liczeniem dzieci elementu, ponieważ właśnie to robiłem, kiedy tu wylądowałem: children('div.classname').length
brs14ku

23

Uzyskanie liczby elementów odnoszących się do tej samej klasy jest tak proste, jak to

<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>


9

do liczenia:

$('.yourClass').length;

powinien działać dobrze.

przechowywanie w zmiennej jest tak proste jak:

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



2

próbować

document.getElementsByClassName('myclass').length

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.