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');

}

});

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

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

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

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

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

Пожалуйста, дайте мне свое мнение.

23
07 марта '13 в 11:40
источник поделиться
2 ответов

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

$('input[name=foo]').prop('checked', true);
$('input[name=foo]').prop('checked', false);
69
07 марта '13 в 11:44
источник

Связанные вопросы


Похожие вопросы

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

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

0
17 окт. '16 в 12:20
источник

Посмотрите другие вопросы по меткам или Задайте вопрос