jQuery attr ('checked',' checked') работает только один раз

У меня проблема с поиском причины для следующего поведения jQuery/checkbox.

$( this.obj + ' table.sgrid-content > thead > tr > th > input.select_all' ).on( 'click' , {grid:this} , function(event){

var grid = event.data.grid;

if( $(this).is(':checked') ){

    $( grid.obj + ' table.sgrid-content > tbody > tr > td > input.select ' ).attr('checked','checked');
    $( grid.obj + ' .sgrid-content > tbody > tr > td > input.select ' ).parents('tr').addClass('ui-state-highlight');

} else {

    $( grid.obj + ' table.sgrid-content > tbody > tr > td > input.select ' ).removeAttr('checked');
    $( grid.obj + ' table.sgrid-content > tbody > tr > td > input.select ' ).parents('tr').removeClass('ui-state-highlight');

}

});

код предназначен для работы следующим образом: - нажмите на ввод.select_all запускает событие - если вход.select_all проверено: добавить атрибут установлен для всех флажков, помеченных как .выберите в таблице.sgrid-содержание - если нет: удалите атрибут "checked" из всех входных данных.выбор элементов.

еще одна простая функция сетки. И это работает. Самое странное, что это работает только однажды. Под этим я подразумеваю, что вы можете выбрать все флажки и снять их. После этой операции функция "выбрать все" перестает работать.

еще одна странная вещь, когда я проверяю элементы dom с firebug, они все становятся checked= 'checked' attr, как и должны, но они отображаются и ведут себя так, как они не были проверены.

селекторы работают так, как должны. Часть кода с добавлением/удалением ui-state-выделить работает все время.

слово объяснение: решетки - это объект, который я передаю вам сетки.obj (в основном идентификатор ceratain div )

пожалуйста, дайте мне Ваше мнение.

2 ответов


использовать prop ('checked', true / false) вместо removeAttr

$('input[name=foo]').prop('checked', true);
$('input[name=foo]').prop('checked', false);

вы можете изменить атрибут, и это также изменит свойство, если элемент не затронут. Как только элемент покидает это начальное состояние, изменение атрибута больше не влияет на свойство. Точное поведение, вероятно, варьируется между браузерами.

Instead of .attr('checked', 'cheked') use .prop('checked', true)