Значит есть ошибки, нужно заглянуть в отладчик, что он вещает.
Собственно ничего сложного нет, нужно удалить ваши обработчики флажков и добавить что я написал, а работа его проста: //общему родителю флажков делегируется обработка изменения их состояния //если таких блоков upsale__block__sub-right-wrap много, то этот обработчик будет выполнятся только в контексте текущего $('div.upsale__block__sub-right-wrap').on('change', 'input', function(e) { var chk = $(e.delegateTarget).find('input'); //получили все флажки текущего родителя //если источник события это флажок block__check, что можно проверить и так: $(this).hasClass('block__check') if(chk.eq(0)[0]==this) chk.slice(1).prop('checked', this.checked); //то определить его состояние всем последующим флажкам текущего родителя else { //иначе это изменение флажков набора var c = chk.slice(1).filter(':checked').length; //есть ли выбранные флажки в наборе? chk.eq(0).prop({checked: c, disabled: !c}); //результат операции присвоить свойствам checked и disabled флажка block__check } }); |
laimas,
Если я отключаю свои обработчики, тогда ваш код включает и выключает все блоки разом, а задача другая: Цитата:
Чего не хватает в вашем коде, так это 1 пункта и 3 пункта:) |
Цитата:
<div class="upsale__block__sub-right-wrap"> <h3>Block 1</h3> <div class="upsale__block__bot-right__title-wrap dflex"> <div class="upsale__block__bot-right__title dflex"> <input id="floor" type="checkbox" class="block__check" disabled="" /> </div> </div> <div class="upsale__block__bot-right__sub-wrap dnone"> <div class="montage__content-wrap"> <span class="montage__text">intro text where we explain </span> <div class="montage__floor-wrap montage__comp-wrap dflex"> <div class="montage__floor dflex"> <div class="floor__item-wrap"> <div class="floor__item-inner"> <div class="floor__item"> <input type="checkbox" name="groundfloor" value="groundfloor"> <div class="floor__item__img"> <img src="catalog/view/theme/myown/image/floor/groundFloor.svg" alt=""> </div> <span class="floor__item__text">floor__item__text 0</span> </div> <div class="floor__item"> <input type="checkbox" name="groundfloor" value="groundfloor"> <div class="floor__item__img"> <img src="catalog/view/theme/myown/image/floor/groundFloor.svg" alt=""> </div> <span class="floor__item__text">floor__item__text 1</span> </div> </div> </div> </div> </div> </div> </div> </div> <div class="upsale__block__sub-right-wrap"> <h3>Block 2</h3> <div class="upsale__block__bot-right__title-wrap dflex"> <div class="upsale__block__bot-right__title dflex"> <input id="floor" type="checkbox" class="block__check" disabled="" /> </div> </div> <div class="upsale__block__bot-right__sub-wrap dnone"> <div class="montage__content-wrap"> <span class="montage__text">intro text where we explain </span> <div class="montage__floor-wrap montage__comp-wrap dflex"> <div class="montage__floor dflex"> <div class="floor__item-wrap"> <div class="floor__item-inner"> <div class="floor__item"> <input type="checkbox" name="groundfloor" value="groundfloor"> <div class="floor__item__img"> <img src="catalog/view/theme/myown/image/floor/groundFloor.svg" alt=""> </div> <span class="floor__item__text">floor__item__text 0</span> </div> <div class="floor__item"> <input type="checkbox" name="groundfloor" value="groundfloor"> <div class="floor__item__img"> <img src="catalog/view/theme/myown/image/floor/groundFloor.svg" alt=""> </div> <span class="floor__item__text">floor__item__text 1</span> </div> </div> </div> </div> </div> </div> </div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script> $('div.upsale__block__sub-right-wrap').on('change', 'input', function(e) { var chk = $(e.delegateTarget).find('input'), set = chk.slice(1); if(chk.eq(0)[0]==this) set.prop('checked', this.checked); else { var c = set.filter(':checked').length; chk.eq(0).prop({checked: c, disabled: !c}); } }) </script> Флажки выбираются только в своих блоках или в обоих не зависимо в каком блоке выбор или же только в своем? |
laimas,
Цитата:
|
Цитата:
|
laimas,
да, не верная. Выходит что при нажатии на главный чекбокс выбираются все нижние, но при выборе нижнего (если жать именно любой из нижних) не отмечается главный. главный приходится вручную отмечать Надо чтобы нажал даже если один из нижнихвыбран, то главный тоже имел галку. А сейчас такого нет. Но зато работает, что если снять галку с главног, то и с дочек снимается - это хорошо и должно быть |
Цитата:
Цитата:
|
|
Здесь, в песочнице, запустите код что я выставил. Верно все? А у вас не так может быть потому, если: а) либо верстка не такая и значит селектор надо изменить, б) либо есть ошибки в коде и надо в отладчике все проверить.
|
laimas,
нет ошибок в коде:( не ругается ни на что по поводу верстки я специально дал вам ссылку и инструкцию, чтобы посмотреть на живом примере как это работает |
Часовой пояс GMT +3, время: 16:42. |