Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как проставить атрибут checked у дочерних элементов (https://javascript.ru/forum/dom-window/67227-kak-prostavit-atribut-checked-u-dochernikh-ehlementov.html)

imedia 04.02.2017 19:02

Как проставить атрибут checked у дочерних элементов
 
Помогите пожалуйста !!!

Как при нажатии на первый чекбокс проставить чекбоксы всех вложенных элементов желательно методом click по вложенным чекбоксам, как это вообще правильно делается

<ul class="par parent0 level0 collapse in" aria-expanded="true">


    <label class="form-checkbox form-icon active">
         <input class="check" checked="checked" type="checkbox">
    </label>
   <li>
        <a>3D Графика</a>
        <ul class="collapse level1"><label class="form-checkbox form-icon">
         <input class="check" type="checkbox"></label>
         <li>
            <a>3D Анимация</a>
         </li> 
            <label class="form-checkbox   form-icon">
         <input class="check" type="checkbox"></label>
          <li>
           <a>3D Иллюстрация</a>
          </li> <label class="form-checkbox form-icon">
          <input class="check" type="checkbox"></label>
         <li>
        <a>3D Моделирование</a>
         </li> <label class="form-checkbox form-icon">
        <input class="check" type="checkbox"></label>
        <li>
         <a>3D Персонажи</a>
        </li> <label class="form-checkbox form-icon">
         <input class="check" type="checkbox"></label>
         <li>
          <a >3D Визуализация</a>
         </li>  
       </ul></li></ul>

$('.form-checkbox input[type=checkbox]').change(function(){
    var obj;
  if($(this).attr('checked','checked')){
      obj = ($(this).parent('.form-checkbox').parent('.level0').find('.active').find('ul').find('.form-checkbox').find('input[type=checkbox]'))
      $.each( obj, function( key, value ) {
       alert( key + ": " + value);
      });

     
  }

});

В jquery коде удивительно получаю алерт но не могу даже класс чекбокса просмотреть

Еще тут нужно учесть что lebel вокруг каждого чекбокса служит псевдоэлементом идолжен быть active

laimas 04.02.2017 20:57

Строка 3

if(this.checked){


строка 4

и строка 5

$.each($(this).closest('.par').find('input:checkbox'), function( key, value ) {

imedia 04.02.2017 21:24

obj = ($(this).parent('.form-checkbox').parent('.level0').find('.active').find('ul').find('.form-checkbox').find('input[type=checkbox]'))
      $.each( obj, function( key, value ) {
         value.click()
      });

Вот этот код отлично отрабатывает но он привязан к ('.active') а это меняет чекбоксы во всех активных а надо только в текущем

imedia 04.02.2017 21:30

..

laimas 04.02.2017 21:33

Цитата:

Сообщение от imedia
и пошел перечислять все вложенные чекбоксы во всех категориях а не только в текущей

А что есть текущая, а что нет? Из приведенного куска html это можно понять? Если класс active ее определяет, то там всего один флажок и циклов не надо.

Цитата:

Сообщение от imedia
Кроме того не понятно как проставятся чекбоксы

Что значит проставятся?

рони 04.02.2017 21:53

imedia,
Цитата:

Тег <ul> устанавливает маркированный список. Каждый элемент списка должен начинаться с тега <li>.
http://htmlbook.ru/html/ul
никаких label для дочерних элементов ul не придумали!!!


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