Выделите все флажки с помощью jQuery
Мне нужна помощь с селекторами jQuery. Скажем, у меня есть разметка, как показано ниже:
<form>
<table>
<tr>
<td><input type="checkbox" id="select_all"/></td>
</tr>
<tr>
<td><input type="checkbox" name="select[]"/></td>
</tr>
<tr>
<td><input type="checkbox" name="select[]"/></td>
</tr>
<tr>
<td><input type="checkbox" name="select[]"/></td>
</tr>
</table>
</form>
Как получить все флажки, кроме #select_all
, когда пользователь нажимает на него?
Любая помощь будет оценена.
Ответы
Ответ 1
Более полный пример, который должен работать в вашем случае:
$('#select_all').change(function() {
var checkboxes = $(this).closest('form').find(':checkbox');
checkboxes.prop('checked', $(this).is(':checked'));
});
При щелчке по флажку #select_all
, статус флажка установлен, а все флажки в текущей форме установлены в один и тот же статус.
Обратите внимание, что вам не нужно исключать флажок #select_all
из выделения, поскольку он будет иметь тот же статус, что и все остальные. Если вам почему-то нужно исключить #select_all
, вы можете использовать это:
var checkboxes = $(this).closest('form').find(':checkbox').not($(this));
Ответ 2
простой и чистый
$('#select_all').click(function() {
var c = this.checked;
$(':checkbox').prop('checked',c);
});
Ответ 3
Верхний ответ не будет работать в JQuery 1.9+ из-за метода attr(). Вместо этого используйте prop():
$(function() {
$('#select_all').change(function(){
var checkboxes = $(this).closest('form').find(':checkbox');
if($(this).prop('checked')) {
checkboxes.prop('checked', true);
} else {
checkboxes.prop('checked', false);
}
});
});
Ответ 4
$("form input[type='checkbox']").attr( "checked" , true );
или вы можете использовать
: флажок Селектор
$("form input:checkbox").attr( "checked" , true );
Я переписал ваш HTML и предоставил обработчик кликов для основного флажка
$(function(){
$("#select_all").click( function() {
$("#frm1 input[type='checkbox'].child").attr( "checked", $(this).attr("checked" ) );
});
});
<form id="frm1">
<table>
<tr>
<td>
<input type="checkbox" id="select_all" />
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="select[]" class="child" />
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="select[]" class="child" />
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="select[]" class="child" />
</td>
</tr>
</table>
</form>
Ответ 5
$(function() {
$('#select_all').click(function() {
var checkboxes = $(this).closest('form').find(':checkbox');
if($(this).is(':checked')) {
checkboxes.attr('checked', 'checked');
} else {
checkboxes.removeAttr('checked');
}
});
});
Ответ 6
$(document).ready(function(){
$("#select_all").click(function(){
var checked_status = this.checked;
$("input[name='select[]']").each(function(){
this.checked = checked_status;
});
});
});
Ответ 7
jQuery(document).ready(function () {
jQuery('.select-all').on('change', function () {
if (jQuery(this).is(':checked')) {
jQuery('input.class-name').each(function () {
this.checked = true;
});
} else {
jQuery('input.class-name').each(function () {
this.checked = false;
});
}
});
});
Ответ 8
Этот код отлично работает со мной
<script type="text/javascript">
$(document).ready(function(){
$("#select_all").change(function(){
$(".checkbox_class").prop("checked", $(this).prop("checked"));
});
});
</script>
вам нужно всего лишь добавить флажок checkbox_class для всех
Легко и просто: D
Ответ 9
$('.checkall').change(function() {
var checkboxes = $(this).closest('table').find('td').find(':checkbox');
if($(this).is(':checked')) {
checkboxes.attr('checked', 'checked');
} else {
checkboxes.removeAttr('checked');
}
});
Ответ 10
$("#select_all").live("click", function(){
$("input").prop("checked", $(this).prop("checked"));
}
});
Ответ 11
$( "# select_all" ). change (function() {
$('input [type = "checkbox" ]'). prop ( "checked", $(this).prop( "checked" ));
});
Ответ 12
Теперь я неравнодушен к этому стилю.
Я назвал вашу форму и добавил "onClick" в поле select_all.
Я также исключил флажок "select_all" из селектора jquery, чтобы Интернет не взорвался, когда кто-то щелкнул по нему.
function toggleSelect(formname) {
// select the form with the name 'formname',
// then all the checkboxes named 'select[]'
// then 'click' them
$('form[name='+formname+'] :checkbox[name="select[]"]').click()
}
<form name="myform">
<tr>
<td><input type="checkbox" id="select_all"
onClick="toggleSelect('myform')" />
</td>
</tr>
<tr>
<td><input type="checkbox" name="select[]"/></td>
</tr>
<tr>
<td><input type="checkbox" name="select[]"/></td>
</tr>
<tr>
<td><input type="checkbox" name="select[]"/></td>
</tr>
</table>
Ответ 13
Вот базовый плагин jQuery, который я написал, который выбирает все флажки на странице, кроме флажка/элемента, который должен использоваться в качестве переключателя:
(function($) {
// Checkbox toggle function for selecting all checkboxes on the page
$.fn.toggleCheckboxes = function() {
// Get all checkbox elements
checkboxes = $(':checkbox').not(this);
// Check if the checkboxes are checked/unchecked and if so uncheck/check them
if(this.is(':checked')) {
checkboxes.prop('checked', true);
} else {
checkboxes.prop('checked', false);
}
}
}(jQuery));
Затем просто вызовите функцию в вашем флажке или элементе кнопки:
// Check all checkboxes
$('.check-all').change(function() {
$(this).toggleCheckboxes();
});
Ответ 14
Столкнувшись с проблемой, ни один из вышеперечисленных ответов не работает. Причина заключалась в плагине jQuery Uniform (работа с тема metronic). Я надеюсь, что ответ будет полезен:)
Работа с JQuery Uniform
$('#select-all').change(function() {
var $this = $(this);
var $checkboxes = $this.closest('form')
.find(':checkbox');
$checkboxes.prop('checked', $this.is(':checked'))
.not($this)
.change();
});
Ответ 15
Один флажок, чтобы разрешить им все
Для людей, которые все еще ищут плагин для управления флажками через один из них, который имеет легкий вес, имеет встроенную поддержку UniformJS и iCheck и не проверяется, когда хотя бы один из контролируемых флажков снят (и проверяется, когда все контролируемые флажки проверены, конечно) Я создал плагин jQuery checkAll.
Не забудьте проверить примеры на странице документации .
Для этого вопроса вам нужно всего лишь:
$( '#select_all' ).checkall({
target: 'input[type="checkbox"][name="select"]'
});
Разве это не ясно и просто?