Attr( checked, checked ) не працює

Помітив дивний баг із чекбоксами в jQuery (а може, і в самому Chrome?) Навіть не знаю, як до ладу описати цей баг, тому ось: jsfiddle.net/abZLf. Група first спрацьовує лише один раз, після чого виділяти чекбокси відмовляється (але знімати – знімає). У групі second, написаній не в стилі jQuery, працює нормально.

Перевірялося на Chrome 24 та Firefox 18 (ОС - Kubuntu 12.10).

Власне питання: чому це так?

Не впевнений, що це баг.

Ви неправильно використовуєте Jquery та Javascript. Функція attr ( api.jquery.com/attr/ ) призначена для зміни HTML-аттрибута елемента, а не зміни стану чекбоксу. Якщо ви хочете зняти/установити галочку, є певний у стандарті DOM спосіб ( www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-30233917 ):

> checked of type boolean > У той час як тип елемента має значення «радіо» або «checkbox», це відповідає поточному штату у вигляді контролю, в interactive user agent. Зміни до цього параметра змінюють структуру режиму контролю, але не змінити значення параметра HTML зйомки параметра елемента INPUT.

Оскільки інших способів змінити співвідношення чекбоксу в специфікаціях HTML і DOM не зазначено, це означає, що єдиний офіційний спосіб - використовувати властивість checked у DOM-об'єкта.

Очевидно, деякі браузери переносять маніпуляції з аттрибутами на чекбокс. Але це дуже кволий та ненадійний спосіб і не завжди працює. Мабуть, роблячи remoevattr, ви щось ламаєте. Щоб перевірити, чи встановлена ​​галочка, пишіть:

Щоб встановити стан чекбоксу, пишіть: