выбрать все флажок работает только дважды

Я получил этот код из stackoverflow, который выглядит как довольно хорошее решение «выбрать все», любые идеи, почему он терпит неудачу после второго щелчка?

http://jsfiddle.net/R9zjk/2/

<table>
    <tr>
        <td>
            <input type='checkbox' value='0' class=''>
        </td>
        <td>
            <input type='checkbox' value='0' class=''>
        </td>
        <td>
            <input type='checkbox' value='0' class=''>
        </td>
        <td width="100" align="right">
            select all <input type='checkbox' value='0' class='selectall2'>
        </td>
    </tr>
</table>

$(document).ready(function() {


    $(document).on("click", ".selectall2", function() {


        $(this).closest('tr').find('input[type=checkbox]').attr('checked', this.checked);


    });



});
4

5 ответы

используйте .prop() вместо .attr() выше jQuery 1.6

Если вы используете jQuery 1.6, код if ($ (elem) .attr («checked»)) будет извлекать фактический атрибут , который не изменяется, поскольку этот флажок установлен проверен и не установлен. Он предназначен только для хранения значения по умолчанию или начального значения проверяемого свойства. Чтобы поддерживать обратную совместимость, метод .attr() в jQuery 1.6.1+ будет извлекать и обновлять свойство для вас, поэтому код для логических атрибутов не должен изменяться на .prop ( ) . Тем не менее, предпочтительный способ получить проверенное значение - это один из вариантов, перечисленных выше. Чтобы увидеть, как это работает в последнем jQuery, установите/снимите флажок в приведенном ниже примере.

See .prop()

demo - http://jsfiddle.net/f9QYx/

19
добавлено
новое обучение для меня тоже :)
добавлено автор Sahil Grover, источник
Выучил вещь или 2 из этого комментария - возьмите мою передовую.
добавлено автор MrMarlow, источник
Большое спасибо ...
добавлено автор Anil Maurya, источник
AHHHH ОК. благодаря
добавлено автор jim smith, источник

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

<script>
    $('#select_all').click(function() {
    $( this ).closest('table').find(':checkbox').prop( 'checked' , this.checked ? true : false );
})
</script>
1
добавлено

Вы код не работает на jQuery 1.9 и из-за рамки версии jQuery у вас есть, выберите 1.8.3, и это сработает.

демо-версия

$(document).ready(function() {
    $(document).on("click", ".selectall2", function() {
        $(this).closest('tr').find('input[type=checkbox]').attr('checked', this.checked);
    });
});

Вы должны использовать prop вместо attr для jQuery 1.6 и выше

демо-версия

$(document).ready(function() {
    $(document).on("click", ".selectall2", function() {
        $(this).closest('tr').find('input[type=checkbox]').prop('checked', this.checked);
    });
});

Как и в jQuery 1.6, метод .attr() возвращает undefined для атрибутов   которые не были установлены. Извлечение и изменение свойств DOM, таких как   проверенное, выбранное или отключенное состояние элементов формы, используйте   .prop (), jQuery doc

0
добавлено

Try using .attr('checked', 'checked')

$(document).ready(function() {
    $(document).on("click", ".selectall2", function() {
        $(this).closest('tr').find('input[type=checkbox]').attr('checked', 'checked');
    });
});
0
добавлено

some problem is solved see the live demo at here

Код HTML:

<table>
    <tr>
        <td>
            <input type='checkbox' value='0' class='abc'>
        </td>
        <td>
            <input type='checkbox' value='0' class='abc'>
        </td>
        <td>
            <input type='checkbox' value='0' class='abc'>
        </td>
        <td width="100" align="right">
            select all <input type='checkbox' value='0' class='selectall2'>
        </td>
    </tr>
</table>

и Javascript:

$(document).ready(function() {
    $(document).on("click", ".selectall2", function() {
        $(this).closest('tr').find('input[type=checkbox]').attr('checked', this.checked);
    });
    $(document).on("click",".abc",function(){
        var temp=0;
        if(!$(".abc").attr('checked'))
        {
            temp=1;
        }
        if(temp==0)
        {
                    $(".selectall2").attr('checked',true);
        }
        else
        {
                    $(".selectall2").attr('checked',false);
        }
    });
});
0
добавлено
Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda