Подтвердить что ты не робот

HTML-атрибуты vs properties

Является ли id атрибутом или свойством HTML?

я должен делать $('#selector').attr('id'); или $('#selector').prop('id');

Я прочитал много статей и все еще в замешательстве.

Может кто-нибудь объяснить мне, в чем разница между атрибутами и свойствами в HTML/JS на очень простом языке?

4b9b3361

Ответ 1

Атрибуты определяются HTML. Свойства (для элементов DOM) определяются DOM (а также HTML 5, который стирает границу между разметкой и DOM).

Некоторые атрибуты HTML имеют отображение 1:1 на свойства. id является одним из примеров такого.

Иногда имена разные. Атрибут class отображается на свойство className, а атрибут value отображается на свойство defaultValue (в то время как свойство value не имеет соответствующего атрибута).

Когда я изначально писал этот ответ, я думал, что существуют атрибуты без привязки 1:1 к свойству. С этим обновлением я больше не могу думать ни о чем (и внес исправления в приведенные выше примеры).

Ответ 2

Да, attr предназначен для атрибутов html, поскольку они строго определены. prop - для свойств.

Итак, скажем, у вас есть элемент node с классом "something" (raw element not jQuery object). Элемент elem.className является свойством, но здесь находится атрибут. Изменение атрибута класса также автоматически изменяет свойство и наоборот.

В настоящее время attr запутан и запутан, потому что он попытался выполнить работу обеих функций, и из-за этого есть много ошибок. Введение jQuery.fn.prop позволит решить несколько блокаторов, отдельный код, поскольку он должен был быть отделен от начала, и дать разработчикам более быстрые функции делать то, что они ожидают от них.

Позвольте мне составить процент в секунду и сказать, что из моего опыта поддержки IRC и чтения другого кода 95% вариантов использования attr не придется переключаться на prop.

Подробнее