выбрать все флажок - собрать значения

У меня есть контейнер, где у меня есть флажки. У меня есть флажок «Выбрать все» вне контейнера.

<tr>
<td width="33%">Category <br> <input type="checkbox" id="all_cat" name="catChkBox" class="ckbox"/> Select All/ Unselect All  </td>
</tr>
    <tr>
    <td width="50%" valign="top" id="catTd">
                                        <div class="container" id="categoryContainer"></div>
                                    </td>
    </tr>

Используя вызов DWR, я получаю значения флажков, которые необходимо заполнить внутри контейнера.

... function(data.... // data has got the values to be displayed in container with checkboxes
for(var i=0; i<data.length; i++)
{
$('#catContainer').append('<input type="checkbox" data-name="' + data[i].id + '" name="catChkBox" class="ckbox" id = "' + data[i].id + '" value="' + data[i].id + '" /> ' + data[i].name + '<br/>');
list = data[i].name;
catSL.push(data[i].id);
}
categories = $("input[name=catChkBox]:checked").map(function () {
return $(this).data('name');
}).get();
}, errorHandler:function(){
},async:false
});

Я хочу выбрать все варианты сейчас. Когда я нажимаю на флажок «Выбрать все» вне контейнера, он должен установить флажки внутри контейнера. Аналогично для отмены выбора всего. Я попробовал приведенный ниже код, но он не работает.

$('#all_cat').click( function(){
    for(var i=0; i<categoryData.length; i++)  //categoryData is the data which i get from dwr call
    {
    $(categoryData[i].id ).prop('checked', isChecked('all_cat'));
    }
    });
function isChecked(checkboxId) {
    var id = '#' + checkboxId;
    return $(id).is(":checked");
}

Любая помощь ?????


person sahana    schedule 10.10.2013    source источник
comment
Должен ли $(categoryData[i].id ).prop('checked', isChecked('all_cat')); быть $('#' + categoryData[i].id ).prop('checked', isChecked('all_cat')); ?   -  person MadSkunk    schedule 10.10.2013


Ответы (2)


Вы можете просто использовать соответствующий селектор jQuery, чтобы выбрать все флажки внутри вашего контейнера и сразу установить свойство checked:

$('#all_cat').click(function() {
    $('#catContainer input.ckbox').prop('checked', $(this).is(':checked'));
});
person Igor Dymov    schedule 10.10.2013

Это установит все флажки внутри контейнера div в то же отмеченное состояние, что и флажок #all_cat:

$('#all_cat').click(function(){ 
    $('#categoryContainer input:checkbox').prop('checked', $(this).is(':checked'));
});
person Richard Dalton    schedule 10.10.2013
comment
Это работает хорошо. Есть проблема. $(input.ckbox:checked).each(function (){ selectedValue.push($(this).val()); }); Для этого, когда я пытался предупредить selectedValue, он показывает, 1,2, почему это происходит? я хочу избавиться от него. любая помощь ? - person sahana; 10.10.2013
comment
$("input.ckbox:checked") будет включать любые флажки на вашей странице с классом ckbox. Вместо этого попробуйте $('#categoryContainer input.ckbox:checked'). - person Richard Dalton; 10.10.2013