Подтвердить что ты не робот

JQuery выбор всех дочерних флажков

Во-первых, просто хотел сказать, что я безнадежен с jQuery.

Я искал какой-то код из поста, который выбирает каждый родительский флажок (и работает):

$(function() {
  $(":checkbox").change(function () {
    $(this).parents().children(':checkbox').attr('checked', this.checked);
  });
});

У нас есть структура дерева с использованием <ul> <li>, и каждый <li> имеет флажок. Я хочу сделать противоположное вышеизложенное и выполнить тот же выбор флажка на всех дочерних флажках.

Кто-нибудь может изменить это выше?

Просто отметим, что мы используем бритву, и каждый флажок - это @Html.CheckboxFor, поэтому вывод идет по строкам:

<input name="Survey.Buildings[0].IsSelected" type="checkbox" value="true" checked="checked" data-val="true" data-val-required="The Selected? field is required." id="Survey_Buildings_0__IsSelected" />
<input name="Survey.Buildings[0].IsSelected" type="hidden" value="false" />
  • РЕДАКТИРОВАТЬ 2:

OK Я исправил HTML, и теперь структура выглядит следующим образом:

<ul>
    <li> Cbx1
        <ul>
            <li> Cbx 2 </li>
        </ul>
    </li>
    <li> Cbx3 </li>
    <li> Cbx4   
        <ul>
            <li> Cbx 5 </li>
            <li> Cbx 6 </li>
        </ul>
    </li>
</ul>

Итак, если Cbx4 был проверен, Cbx5 и 6 будут проверены, и если бы он был снят, они не были бы отмечены

Очень ценится

Andy

4b9b3361

Ответ 1

jsFiddle Demo

$(function() {
  $("input[type='checkbox']").change(function () {
    $(this).siblings('ul')
           .find("input[type='checkbox']")
           .prop('checked', this.checked);
  });
});

Ответ 2

$(function() {
  $(":checkbox").change(function () {
    $(this).children(':checkbox').attr('checked', this.checked);
  });
});

Не совсем понятно с вашим вопросом, но вы можете попробовать еще раз, удалив parent(), как показано выше.