Разница между методами .attr() и .prop() в jQuery заключается в том, что они работают с разными сущностями DOM-элементов. 1
.attr() предназначен для работы с атрибутами HTML-элемента и обеспечивает прямой доступ к атрибутам, определённым в разметке. 12 Он больше подходит для работы со статическими характеристиками элементов, такими как id, class, src или href. 1
.prop() предназначен для работы со свойствами JavaScript-объекта, представляющего DOM-элемент. 12 Он особенно полезен при работе с динамически изменяемыми свойствами элементов. 1
Таким образом, метод .prop() более корректно отражает актуальное состояние элемента, например, в случае с чекбоксами. 1 Если пользователь снимет галочку, .prop('checked') вернёт false, тогда как .attr('checked') всё ещё будет возвращать «checked», поскольку этот атрибут остаётся неизменным в HTML-разметке. 1