2013-10-08 3 views
44

Есть id атрибут или свойство HTML?HTML-атрибуты vs properties

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

Я прочитал много статей и до сих пор путают.

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

+6

http://stackoverflow.com/questions/5874652/prop-vs-attr – Satpal

+3

@Satpal Связанный вопрос задает различия между функциями JQuery в то время как этот вопрос спрашивает, в чем разница между свойствами и атрибутами в HTML. – Trisped

ответ

112

Атрибуты определяются HTML. Свойства определяются DOM.

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

Некоторые не делают (например, атрибут value задает начальное значение входного сигнала, но value свойство определяет значение тока ).

+0

Всегда ли свойство, соответствующее каждому атрибуту? Всегда ли существует начальное сопоставление 1: 1 между значением атрибута и значением свойства? –

+2

@KevinWheeler - Нет и нет. – Quentin

4

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

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

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

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

See More