Установите / снимите все флажки в jQuery
У меня недостаточно знаний о jQuery, мне нужен еще один флажок с именем "выбрать все". Когда я выбираю этот флажок, все флажки на странице HTML должны быть установлены. Как я могу это сделать?
Я использую приведенный ниже код, но он не работает нормально:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="listbox.css" />
<script src="jquery-2.1.1.min.js"></script>
<script>
// Listen for click on toggle checkbox
$('#select-all').click(function(event) {
if(this.checked) {
// Iterate each checkbox
$(':checkbox').each(function() {
this.checked = true;
});
}
});
</script>
</head>
<body>
<label for="blah">item-1</label> <input name="checkbox-1" id="checkbox-1" type="checkbox" />
<br />
<input type="checkbox" name="select-all" id="select-all" />
</body>
</html>
Я скачал JQ по ссылке:
Скачайте сжатый, производственный jQuery 2.1.1
4 ответа
<ul>
<li><label>item-1</label><input name="checkbox-1" id="checkbox-1" type="checkbox" class="checkitem" /></li>
<li><label>item-1</label><input name="checkbox-2" id="checkbox-2" type="checkbox" class="checkitem" /></li>
<li><label>item-1</label><input name="checkbox-3" id="checkbox-3" type="checkbox" class="checkitem" /></li>
<li><label>item-1</label><input name="checkbox-4" id="checkbox-4" type="checkbox" class="checkitem" /></li>
</ul>
<input type="checkbox" name="select-all" id="select-all" /> Check all
<script>
$(document).ready(function() {
$('#select-all').click(function(event) {
if(this.checked) {
$('.checkitem').each(function() {
this.checked = true;
});
}else{
$('.checkitem').each(function() {
this.checked = false;
});
}
});
});
</script>
[Вот скрипка, которую я сделал][1]
Добавить скрипт внизу страницы
[1]: http://jsfiddle.net/zbjc0fpe/1/
Попробуйте что-то вроде этого.
$('#select-all').click(function(event) {
var checked = this.checked;
$("input[type=checkbox]").each(function(){
$(this).prop('checked', checked);
});
});
Просто для ухмылки и хихиканья... другие ответы работают, но мне нравится краткость и возможность повторного использования следующего метода... так что на всякий случай это поможет кому-нибудь:
$(document).on('click','[data-toggle=checkAll]', function() {
var $all = $(this),
$targets = $( $all.data('target') )
;
$targets.prop('checked', $all.is(':checked') );
}
Используя приведенный выше скрипт, вы можете иметь столько флажков "checkAll" на странице, сколько захотите... каждый флажок "check all" просто должен указать другой селектор цели:
<input type='checkbox' data-toggle='checkAll' data-target='.check-option' /> check all
<input type='checkbox' class='check-option' value='1' /> option 1
<input type='checkbox' class='check-option' value='2' /> option 2
<input type='checkbox' data-toggle='checkAll' data-target='.check-option2' /> check all 2
<input type='checkbox' class='check-option2' value='1' /> option 1
<input type='checkbox' class='check-option2' value='2' /> option 2