Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Собрать все одинаковые классы в массив в jQuery (https://javascript.ru/forum/jquery/41651-sobrat-vse-odinakovye-klassy-v-massiv-v-jquery.html)

lev-otinov 23.09.2013 20:30

Собрать все одинаковые классы в массив в jQuery
 
Здравствуйте! Прошу помощи в данном вопросе:
Есть примерно такой код:

<label for="2" class="price"><span>3200</span> р
          <input type="checkbox" id="2">
        </label>
<label for="2" class="price"><span>3000</span> р
          <input type="checkbox" id="2">
        </label>
<label for="2" class="price"><span>4600</span> р
          <input type="checkbox" id="2">
        </label>

И таких checkbox-ов есть много.
Сам скрипт имеет формулу в которую надо добавить сумму всех выше описанных элементов в <span>. Но только тех возле которых есть поставленный чекбокс.
Можно конечно вручную прописать каждому class="price" уникальный id и таким способом подставить в формулу не используя массив. Но сложность в том что количество чекбоксов может меняться.
Если что не ясно обяснил укажите и попробую расписать по другому. Спасибо!

DjDiablo 24.09.2013 17:46

Проблему можно решить максимально топорно.

1) найди все выделенные чекбоксы
2) перебирая из один за другим извлекай значение из span и прибавляй к результату

Как то так.

var result=0;
$('.container input[type=checkbox]:checked') .each(function(){
   result+= $(this).parent().find('span').text();
})
alert (result);


.container мне нужен чтобы указать внутри какого элемента собраны все чекбоксы. Вместо контейнера можно просто каждому чекбоксу класс присвоить к примеру. Короче в выборку попасть должны только те чекбоксы которые нам интересны а не все что есть на странице.

lev-otinov 24.09.2013 17:57

Спасибо! Уже получилось.

nyols 25.09.2013 15:55

Цитата:

Сообщение от DjDiablo
.container мне нужен чтобы указать внутри какого элемента собраны все чекбоксы

Так ведь у них есть родитель label с классом .price

var result=0;
$('.price input[type=checkbox]:checked').prev('span').each(function() {
   result+= parseInt($(this).text());
});
      
alert(result);


Часовой пояс GMT +3, время: 10:07.