Перебирайте таблицу html и установите флажки (JQuery)

У меня есть таблица HTML с флажком в каждой строке.
Я хочу зациклиться на таблице и посмотреть, есть ли флажки, которые отмечены. Не работает следующее:

$("#save").click( function() {
    $('#mytable tr').each(function (i, row) {
        var $actualrow = $(row);
        checkbox = $actualrow.find('input:checked');
        console.log($checkbox);
});

Отправляет в консоли следующее:

[prevObject: jQuery.fn.jQuery.init[1], context: tr, selector: "input:checked", constructor: function, init: function…]

за строку независимо от того, установлен ли какой-либо флажок.

Обновление
Такая же проблема:

$('#mytable tr').each(function (i, row) {                                                                                                 
   var $actualrow = $(row);
    $checkbox = $actualrow.find(':checkbox:checked');
    console.log($checkbox);  
});

Ответы

Ответ 1

Используйте это вместо:

$('#save').click(function () {
    $('#mytable').find('input[type="checkbox"]:checked') //...
});

Позвольте мне объяснить вам, что делает селектор: input[type="checkbox"] означает, что это будет соответствовать каждому <input /> с атрибутом типа type равным checkbox После этого: :checked будет соответствовать всем отмеченным флажкам.

Вы можете перебрать эти флажки с помощью:

$('#save').click(function () {
    $('#mytable').find('input[type="checkbox"]:checked').each(function () {
       //this is the current checkbox
    });
});

Вот демонстрационная версия JSFiddle.


И вот демо, которое решает именно вашу проблему http://jsfiddle.net/DuE8K/1/.

$('#save').click(function () {
    $('#mytable').find('tr').each(function () {
        var row = $(this);
        if (row.find('input[type="checkbox"]').is(':checked') &&
            row.find('textarea').val().length <= 0) {
            alert('You must fill the text area!');
        }
    });
});

Ответ 2

используйте .filter(':has(:checkbox:checked)' т.е.:

$('#mytable tr').filter(':has(:checkbox:checked)').each(function() {
 $('#out').append(this.id);
});

см. эту демонстрацию скриптов http://jsfiddle.net/suhailvs/tZvvB/2/

Ответ 3

Следующий фрагмент кода включает/отключает кнопку в зависимости от того, установлен ли хотя бы один флажок на странице.
$('input[type=checkbox]').change(function () {
    $('#test > tbody  tr').each(function () {
        if ($('input[type=checkbox]').is(':checked')) {
            $('#btnexcellSelect').removeAttr('disabled');
        } else {
            $('#btnexcellSelect').attr('disabled', 'disabled');
        }
        if ($(this).is(':checked')){
            console.log( $(this).attr('id'));
         }else{
             console.log($(this).attr('id'));
         }
     });
});

Вот демонстрация в JSFiddle.

Ответ 4

В вашем коде отсутствует });.

$("#save").click(function() {
    $('#mytable tr').each(function (i, row) {
        var $actualrow = $(row);
        $checkbox = $actualrow.find('input:checked');
        console.log($checkbox);
    });
});