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, ви щось ламаєте. Щоб перевірити, чи встановлена галочка, пишіть:
Щоб встановити стан чекбоксу, пишіть: