Не работает массовое выделение флажков на jquery

Рейтинг: 0Ответов: 1Опубликовано: 10.09.2014

Здравствуйте!

Помогите разобраться, почему в найденном мною примере не работает выделение флажков:

    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
    $(document).ready( function() {
       $("#maincheck").click( function() {
            if($('#maincheck').attr('checked')){
                $('.mc').attr('checked', true);
            } else {
                $('.mc').attr('checked', false);
            }
       });
    });
</script>
<input type="checkbox" name="numbers[]" class="mc" value="0" />
<input type="checkbox" name="numbers[]" class="mc" value="1" />
<input type="checkbox" name="numbers[]" class="mc" value="2" />
<input type="checkbox" name="numbers[]" class="mc" value="3" />
<input type="checkbox" name="numbers[]" class="mc" value="4" />
<input type="checkbox" name="numbers[]" class="mc" value="5" />
<input type="checkbox" name="numbers[]" class="mc" value="6" />
<input type="checkbox" name="numbers[]" class="mc" value="7" />
<input type="checkbox" name="numbers[]" class="mc" value="8" />
<input type="checkbox" name="numbers[]" class="mc" value="9" />

<br /><input type="checkbox" name="maincheck" id="maincheck" />

Задача: выделять все флажки по классу .mc, если флажок стоит у #maincheck. Снятие флажков работает, а выделение почему-то нет(

Подозреваю, что функция на снятие у последней версии jquery изменилась, а этот код был написан неизвестно когда. Помогите, плиз.

Ответы

▲ 1Принят

Не attr, а prop используйте.

 $(document).ready( function() {
       $("#maincheck").click( function() {
            if($('#maincheck').prop('checked')){
                $('.mc').prop('checked', true);
            } else {
                $('.mc').prop('checked', false);
            }
       });
       //Добавлено
       $('.mc').click(function(){
         if($('.mc:not(:checked)').length==0){
            $('#maincheck').prop('checked',true);
         }else{
            $('#maincheck').prop('checked',false);         
         }
       });

    });

http://jsfiddle.net/atcjjbqw/

P.S. Хотя в некоторых браузерах и attr работатет, его использование тут не совсем корректно.