Как проверить все флажки в div в jQuery?
EDIT:
Спасибо за ответы, ребята, это выглядит правильно и работает на jsfiddle.net, но в моем коде предупреждение срабатывает хорошо, но ничего не происходит с флажками.:/
$('#selectChb').click(function(){
$(':checkbox').prop("checked", true);
alert("1");
});
$('#deselectChb').click(function(){
$(':checkbox').prop("checked", false);
alert("2");
});
...
<div id="chbDiv" class="ui-widget ui-widget-content ui-corner-all" > <br></br>
<table width="90%" border="0" align="center" cellpadding="5" cellspacing="0">
<tr>
<td colspan="2">Following:</td>
<td> </td>
</tr>
<tr>
<td width="25" align="left"><input type="checkbox" id="check1" /><label for="check1"> </label></td>
<td width="45" align="center"><img src="face_01.jpg" width="32" height="32"></td>
<td>Andrew Lloyd Webber</td>
</tr>
<tr>
<td width="25" align="left"><input type="checkbox" id="check2" /><label for="check2"> </label></td>
<td width="25" align="center"><img src="face_02.jpg" width="32" height="32"></td>
<td>Richard Branson</td>
</tr>
<tr>
<td width="25" align="left"><input type="checkbox" id="check3" /><label for="check3"> </label></td>
<td width="25" align="center"><img src="face_03.jpg" width="32" height="32"></td>
<td>Dmitry Medvedev</td>
</tr>
</table>
<br>
<table width="90%" border="0" align="center" cellpadding="5" cellspacing="0">
<tr>
<td><a href="#" id="selectChb" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-check"></span>Select All</a>
<a href="#" id="deselectChb" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-close"></span>Deselect All</a></td>
<td> </td>
<td> </td>
</tr>
</table>
<br>
</div>
<br>
<div class="ui-widget ui-widget-content ui-corner-all">
Ответы
Ответ 1
Это производное конечное решение, которое находит все флажки внутри DIV и проверяет или отменяет выбор в соответствии с другим отдельным флажком вне DIV, который говорит check/uncheck
function checkCheckboxes( id, pID ){
$('#'+pID).find(':checkbox').each(function(){
jQuery(this).attr('checked', $('#' + id).is(':checked'));
});
}
Использование:
<label>check/uncheck
<input type="checkbox" id="checkall" value="1"
onclick="checkCheckboxes(this.id, 'mycheckboxesdiv');" >
</label>
<div id="mycheckboxesdiv">
<input type="checkbox" value="test1" name="test">
<input type="checkbox" value="test2" name="anothertest">
<input type="checkbox" value="test3" name="tests[]">
<input type="checkbox" value="test1" name="tests[]">
</div>
Преимущество - вы можете использовать независимые флажки и проверять/снимать все независимые от других наборы. Это просто и не нужно работать с id или классами каждого флажка.
Ответ 2
Попробуйте следующее:
Live Demo
$('#selectChb').click(function(){
$(':checkbox').prop("checked", true);
});
Ответ 3
Попробуйте выполнить поиск по всем найденным элементам
$('# selectChb'). click (function() {
alert("c!");
$('#chbDiv').find(':checkbox').each(function(){
$(this).attr('checked', !checkbox.attr('checked'));
});
});
Ответ 4
Попробуйте этот код
$("#Div_ID").find('input[type=checkbox]').each(function () {
// some staff
this.checked = true;
});
Ответ 5
Этот код переключит флажки. uncheck - это класс, присвоенный href.
$('.uncheck').bind('click', function(e) {
$(':checkbox').prop('checked', ($(':checkbox').prop('checked')) ? false : true);
e.preventDefault();
});
Ответ 6
Не удалось прокомментировать ответ latis из-за проблем с репутацией.
Вид действительно поздний, но это сработало для меня (все кредиты латинице)
function checkCheckboxes( id, pID ){
$('#'+pID).find(':checkbox').each(function(){
$(this).prop('checked', $('#' + id).is(':checked'));
});
}
В основном заменили attr на prop.
Ответ 7
У меня была (псевдо) таблица, содержащая строки флажков, которые я хотел бы проверить/снять с одного щелчка.
Для этого я назначил идентификаторы для соответствующих строк (с php во время цикла) и закончил каждую строку другим флажком, который я дал классу "toggle", и значением, равным значению входящей строки /div.
Так же:
<div class="table">
<div class="row" id="rowId">
<span class="td"><input type="checkbox" name="cb1"></span>
<span class="td"><input type="checkbox" name="cb2"></span>
<span class="td"><input type="checkbox" name="cbn"></span>
<span class="td"><input type="checkbox" class="toggle" value="rowId"></span>
</div>
...
</div>
Затем я создал следующий script для запуска при щелчке по этому флажку:
$(".toggle").click(function(){
var id = this.value;
if ($(this).attr("checked")) {
$(this).attr("checked", false);
$('#' + id).find(':checkbox').prop("checked", false);
} else {
$(this).attr("checked", true);
$('#' + id).find(':checkbox').prop("checked", true);
}
});
Надеюсь, что это поможет.
EDIT: удалено глобальное из script и изменено поведение проверки.
Ответ 8
Попробуйте это, чтобы переключить флажки
var bool = false;
$('#selectAll').click(function(e){
$('.users-list :checkbox').prop("checked", bool);
bool = !bool;
});
Ответ 9
Попробуйте заменить
$(':checkbox').prop("checked", true);
с
$(':checkbox').attr("checked", true);
prop не поддерживается в некоторых версиях браузера