Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему элементы формы надо менять через prop, а не через attr?

Мейл Ру Дай баллов Ученик (19), закрыт 4 года назад
Читаю книгу Антона Шевчука - JQuery для начинающих. Там написано следующее.
<<
А теперь выключите музыку, и запомните следующее – для отключения
элементов формы, и для проверки/изменения состояния чекбоксов мы
всегда используем метод «.prop()», пусть вас не смущает наличие
одноименных атрибутов в HTML (это я про «disabled» и «checked»), используем
«.prop()» и точка (наглядный пример property.html).
>>

Почему именно так? Я попробовал сделать input disabled и checkbox checked через attr - все получилось. Так в чем же проблема?

Вот код, если что:
$('.some-input').attr('disabled', true);
$('.some-checkbox').attr('checked', true);
Лучший ответ
Elepsis Eclipse Гений (64033) 4 года назад
attr() — это то, что запишется конкретно в HTML-коде (атрибут)

prop() — свойство (property) в объекте HTML-элемента.

Часто изменение атрибута автоматически меняет и значение свойства, и наоборот. Часто, но не везде.

И, что важнее, некоторые фишки в HTML требуют всего лишь присутствие атрибута, но игнорируют его значение. Например для того же checkbox, если написать

<input type="checkbox" checked="false">

Он всё равно будет чекнутым.
Для этого аффтар договаривается везде использовать prop.
Мейл Ру Дай балловУченик (19) 4 года назад
"Часто, но не везде."
Можно пример этого "не везде"?
Остальные ответы
Похожие вопросы