JQuery выбрать / отменить выбор всех, но только в пределах одного элемента - PullRequest
1 голос
/ 15 декабря 2011

У меня работает код, но когда я добавляю еще один ul, он устанавливает все флажки.

$('#checkall').click(
function(){
    $(this).closest('ul').find(':checkbox').attr('checked', this.checked);
    $(this).closest('ul').find('span').toggleClass('checked', this.checked)
})

<div class="checks">
 <ul>
  <li><label for="checkall"><div class="checker"><span class=""><input type="checkbox"  id="checkall" name="about"></span></div><strong>About our program</strong></label></li>
  <li><label for="about1"><div class="checker"><span><input type="checkbox" id="about1" name="about"></span></div>CEO Message</label></li>
 </ul>
</div>

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

Просто используйте ваш div с проверками классов:

$("#checkall").click(function() {
     $(this).closest("div.checks").find(":checkbox").attr("checked", this.checked);
     $(this).closest("div.checks").toggleClass("checked", this.checked);
});

Обновление

Поскольку вам нужно несколько входов для проверки, вам нужно будет использовать класс вместо идентификатора. Так что сделайте #checkall => input.checkall и он должен работать.

Смотрите мою скрипку: http://jsfiddle.net/c4urself/jvPR3/

1 голос
/ 15 декабря 2011

вы можете использовать:

$('#checkall').click(
function(){
    $(this).find(':checkbox').attr('checked', this.checked);
    $(this).find('span').toggleClass('checked', this.checked)
})

<div class="checks">
 <ul>
  <li><label for="checkall"><div class="checker"><span class=""><input type="checkbox"  id="checkall" name="about"></span></div><strong>About our program</strong></label></li>
  <li><label for="about1"><div class="checker"><span><input type="checkbox" id="about1" name="about"></span></div>CEO Message</label></li>
 </ul>
</div>
...