Из документации:
(attr) Get the value of an attribute for the first element in the set of matched elements or set one or more attributes for every matched element.
(prop) Get the value of a property for the first element in the set of matched elements or set one or more properties for every matched element.
В адаптации Google Translate:
"(attr) Получите значение атрибута для первого элемента в наборе согласованных элементов или установите один или несколько атрибутов для каждого согласованного элемента.""(prop) Получите значение свойства для первого элемента в наборе согласованных элементов или установите одно или несколько свойств для каждого согласованного элемента."
Собственно вот и вся разница: первый метод читает/устанавливает значение атрибута элемента (
Мержевич по теме), а второй - свойство объекта представляющего элемент. Если вкратце, то разница в том, что они из разной среды:
атрибут это термин HTML - вы устанавливаете его в разметке и значение атрибута как-то обрабатывается, влияя на какие-то
свойства элемента. А свойства это значения относящиеся непосредственно к DOM объекту элемента.
Например,
class, один из самых привычных атрибутов для тега, в элементе представлен свойством
className. Если у тега нет атрибута
class, то у самого элемента есть свойство
className, которое содержит пустую строку. Ну и соотвественно задать класс элементу можно либо изменив атрибут
class с помощью
attr, либо изменив свойство
className с помощью
prop.