Выделите все флажки с помощью 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"]'
});

Разве это не ясно и просто?