Attr( отметнато, отметнато ) не работи

Забелязах странен бъг с квадратчетата за отметка в jQuery (или може би в самия Chrome?) Дори не знам как правилно да опиша този бъг, така че ето го: jsfiddle.net/abZLf. Първата група задейства само веднъж, след което отказва да маркира квадратчета (но го премахва). Във втората група, написана в стил, различен от 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 ):

> проверено от тип boolean > Когато атрибутът type на елемента има стойността "radio" или "checkbox", това представлява текущото състояние на контролата на формуляра в интерактивен потребителски агент. Промените в този атрибут променят състоянието на контролата на формуляра, но не променят стойността на атрибута HTML checked на елемента INPUT.

Тъй като няма други начини за промяна на състоянието на квадратче за отметка в спецификациите на HTML и DOM, това означава, че единственият официален начин е да се използва свойството за отметка в DOM обекта ...

Очевидно някои браузъри преместват манипулирането на атрибути в квадратчето за отметка. Но това е много крехък и ненадежден начин и не винаги работи. Очевидно правенето на remoevAttr нарушава нещо. За да проверите дали квадратчето е отметнато, напишете:

За да зададете състоянието на квадратче за отметка, напишете: