Установите все флажки с помощью 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
когда пользователь нажимает на нее?
Любая помощь будет оценена по достоинству.
15 ответов:
более полный пример, который должен работать в вашем случае:
$('#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); });
верхний ответ не будет работать в 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); } }); });
$("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>
$(function() { $('#select_all').click(function() { var checkboxes = $(this).closest('form').find(':checkbox'); if($(this).is(':checked')) { checkboxes.attr('checked', 'checked'); } else { checkboxes.removeAttr('checked'); } }); });
$(document).ready(function(){ $("#select_all").click(function(){ var checked_status = this.checked; $("input[name='select[]']").each(function(){ this.checked = checked_status; }); }); });
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; }); } }); });
этот код отлично работает со мной
<script type="text/javascript"> $(document).ready(function(){ $("#select_all").change(function(){ $(".checkbox_class").prop("checked", $(this).prop("checked")); }); }); </script>
вам нужно только добавить класс checkbox_class для всех флажок
легко и просто :D
$("#select_all").change(function () { $('input[type="checkbox"]').prop("checked", $(this).prop("checked")); });
$('.checkall').change(function() { var checkboxes = $(this).closest('table').find('td').find(':checkbox'); if($(this).is(':checked')) { checkboxes.attr('checked', 'checked'); } else { checkboxes.removeAttr('checked'); } });
$("#select_all").live("click", function(){ $("input").prop("checked", $(this).prop("checked")); } });
теперь я неравнодушен к этому стилю.
Я назвал вашу форму и добавил "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>
вот базовый плагин 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(); });
столкнулся с проблемой, ни один из вышеперечисленных ответов не работают. Причина была в плагине 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(); });
один флажок, чтобы управлять ими всеми
для людей, которые все еще ищут плагин для управления флажками через один, который легкий, имеет встроенную поддержку UniformJS и iCheck и отключается, когда по крайней мере один из контролируемых флажков отключен (и проверяется, когда все контролируемые флажки проверяются, конечно) я создал jQuery checkAll плагин.
Не стесняйтесь проверять примеры страница документация.
для этого примера вопроса все, что вам нужно сделать, это:
$( '#select_all' ).checkall({ target: 'input[type="checkbox"][name="select"]' });
разве это не ясно и просто?