Функция "выбрать все" и iCheck

Я хочу реализовать "Выбрать все", используя iCheck.

Это то, что я сделал до сих пор:

$(function () {
    $('input').iCheck();
    $('input.all').on('ifChecked ifUnchecked', function(event) {
        if (event.type == 'ifChecked') {
            $('input.check').iCheck('check');
        } else {
            $('input.check').iCheck('uncheck');
        }
    });
    $('input.check').on('ifUnchecked', function(event) {
        $('input.all').iCheck('uncheck');
    });
});

Сценарий: jsfiddle.net/N7uYR/1/

Я хочу, чтобы при выборе "флажок 1", "флажок 2", "флажок 3", "флажок 4" выбрано "Выбрать все".

Точно так: jsfiddle.net/ivanionut/N7uYR/

Как я могу это сделать?

Ответы

Ответ 1

Вот что я придумал.

$(function () {
    var checkAll = $('input.all');
    var checkboxes = $('input.check');

    $('input').iCheck();

    checkAll.on('ifChecked ifUnchecked', function(event) {        
        if (event.type == 'ifChecked') {
            checkboxes.iCheck('check');
        } else {
            checkboxes.iCheck('uncheck');
        }
    });

    checkboxes.on('ifChanged', function(event){
        if(checkboxes.filter(':checked').length == checkboxes.length) {
            checkAll.prop('checked', 'checked');
        } else {
            checkAll.removeProp('checked');
        }
        checkAll.iCheck('update');
    });
});

jsFiddle

Ответ 2

Для тех, кто все еще борется с этим, я немного изменил принятый ответ fooobar.com/questions/352032/...) от Dzulqarnain Nasir.

Я изменил метод removeProp на метод prop:

checkAll.removeProp('checked');

Изменено на

checkAll.prop('checked', false);

Метод removeProp не работал у меня, но установил свойство checked на false.

На момент написания, я использую iCheck 1.0.2 с jQuery 2.1.4

Ответ 3

u может использовать флажок parent of ur checkbox. например

<div class='allchecked'>
<input type="checkbox"/>
<input type="checkbox"/>

и используя jquery для установки attr ( "checked" ) или нет.

Ответ 4

Если кто-то еще сталкивается с этой проблемой, принятый ответ не работал у меня на динамически созданных флажках. Я нашел решение здесь:

https://github.com/fronteed/iCheck/issues/44