Выбор всех флажков с помощью jQuery - PullRequest
4 голосов
/ 21 сентября 2011

Я просто хочу установить все флажки на странице, если пользователь нажимает кнопку «Выбрать все».

В теле:

<button id="checkall">Select All</button>

jQuery:

<head>

    <script type="text/javascript" src="js/jquery.js"></script>

    <script type="text/javascript">
    $(document).ready(function(){
        $('#checkall').click(function () {
            $("input[type=checkbox]").each( function() {
            $(this).attr('checked', true);
        });
    });
    </script>
</head>

И флажки генерируются немного php:

echo '<li>';
echo '<input type="checkbox" name="checkbox[]" value="'.$x.'" />'.$x.'<br/>';
echo '</li>';

Может кто-нибудь сказать мне, что я делаю не так?

Ответы [ 4 ]

10 голосов
/ 21 сентября 2011

Вам не нужно каждое утверждение.Просто установите все флажки и установите свойство checked = true.

$(document).ready(function(){
    $('#checkall').click(function () {
        $("input:checkbox").prop('checked', true);
    });
});

Примечание jQuery.prop () - это функция, добавленная в 1.6 и выше.Если вы используете версию jQuery до 1.6, вам понадобится следующее.

$(document).ready(function(){
    $('#checkall').click(function () {
        $("input:checkbox").attr('checked','checked');
    });
});
1 голос
/ 21 сентября 2011

Вместо того, чтобы ставить флажок с именем тега, лучше назначьте ему некоторый класс и выберите его с именем класса

  $(document).ready(function(){
      $('#checkall').click(function () {
           $(".checkbox").each( function(i,chkbox) {
             $(chkbox).attr('checked', true);
      });
     });
   });

php code

                 echo '<li>';
                echo '<input type="checkbox" class="checkbox" name="checkbox[]" value="'.$x.'" />'.$x.'<br/>';
                echo '</li>'; 
0 голосов
/ 10 июня 2014

Это будет работать, короткий и удобный код

<script>
    $('#check_all').click(function () {
    $( this ).closest('form').find(':checkbox').prop( 'checked' , this.checked ? true : false );
})
</script>
0 голосов
/ 21 сентября 2011

Вы просто пропустите }); для оператора .each(function(){}! Больше не было ошибок!

$(document).ready(function () {
    $('#checkall').click(function () {
        $("input[type=checkbox]").each(function () {
            $(this).attr('checked', 'checked');
            // or 
            // $(this).attr('checked', true);
        }); // you missed this one!!!
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...