Разница между prop() и attr() в jQuery и когда использовать attr() и prop()

Я видел в некоторых местах .attr() используется в jQuery. В некоторых местах используется .prop(). Но я искал  в SO и google я очень смущен. Пожалуйста, скажите мне точную разницу между эти два и когда их использовать.

Я видел следующие ссылки    jQuery attr vs. prop, есть список реквизитов?   jQuery attr vs prop?

Но у меня не было ответа. Пожалуйста, помогите мне. Спасибо заранее.

Прежде чем дать нисходящий пояс, объясните причину, затем я исправлю в своем следующем сообщении.

Ответ 1

из docs

Разница между атрибутами и свойствами может быть важной в конкретных ситуациях. Перед jQuery 1.6 метод .attr() иногда учитывал значения свойств при извлечении некоторых атрибутов, что может привести к непоследовательному поведению. Начиная с jQuery 1.6, метод .prop() предоставляет способ явно извлекать значения свойств, в то время как .attr() извлекает атрибуты.

Пример

Например, selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked и defaultSelected должны извлекаться и устанавливаться с помощью метода .prop(). До jQuery 1.6 эти свойства были восстановлены с помощью метода .attr(), но это не было в пределах attr. Они не имеют соответствующих атрибутов и являются только свойствами.

обновлен после комментария

Вы можете установить атрибут для элемента HTML. Вы определяете его при написании исходного кода, как только браузер проанализирует ваш код, будет создан соответствующий DOM node, который является объектом, обладающим, таким образом, свойствами.

Простой пример может быть...

<input type="test" value="test" id="test" />

Здесь тип, значение, id являются атрибутами. Когда браузер отобразит его, вы получите другие свойства, такие как align, alt, autofocus, baseURI, checked и т.д.

ссылка, если вы хотите больше узнать об этом

Ответ 2

.attr() изменяет атрибуты для этого тега HTML.

.prop() изменяет свойства для этого тега HTML в соответствии с деревом DOM.

Как показывает пример в этой ссылке. Поле ввода может иметь атрибут "значение". Это будет равно введенному вами значению по умолчанию. Если пользователь изменяет значение в поле ввода, свойство "значение" изменяется в дереве DOM, но исходный атрибут остается остающимся.

В принципе, если вы хотите установить значение по умолчанию для атрибута HTML-тега, используйте функцию .attr(). Если это значение может быть изменено пользователем (например, входы, флажки, радиоприемники и т.д.), Используйте функцию .prop(), чтобы получить самое новое значение.

http://jquery-howto.blogspot.com/2011/06/html-difference-between-attribute-and.html

Ответ 3

JQuery - это изменяющаяся библиотека, и иногда они делают регулярные улучшения..attr() используется для получения атрибутов из тегов HTML, и хотя он отлично функционирует .prop() был добавлен позже, чтобы быть более семантическим, и он работает лучше с атрибутами без ценности, такими как "checked" и "selected".

Сообщается, что если вы используете более позднюю версию JQuery, вы должны использовать .prop(), когда это возможно.