Насколько мне известно, функция .prop() может делать все то же, что и функция .attr(), но в целом более безопасным и простым способом.
Например:
- Если я хочу получить состояние флажка по умолчанию в HTML, я могу сделать
$('myCheckbox').prop('defaultChecked')
(вместо$('myCheckbox').attr('checked')
). На самом деле это кажется более безопасным, чем использование.attr('checked')
, поскольку атрибут может потерять свое значение, если флажок будет динамически изменен, в то время как.prop('defaultValue')
сохранит значение (например, http://jsfiddle.net/p1Lrgwnb/1/) - Несмотря на то, что я часто вижу, что
.attr()
используется последовательно с такими значениями, какid
иname
в примерах StackOverflow,.prop()
также отлично работает с ними. Я не знаю какой-либо причины, по которой.attr()
кажется предпочтительным для этих ценностей, кроме традиционных условностей и привычек.
Был ли когда-нибудь случай использования, когда мне нужно было бы использовать .attr()
или чтобы функция .prop()
не давала мне нужной мне информации?
EDIT: Этот вопрос не имеет ничего общего с тем, в чем разница между .prop()
и .attr()
. Я подробно изучил эти вопросы в StackOverflow, в том числе вопрос, указанный ниже (stackoverflow.com/questions/5874652/prop). -vs-attr ). Из моего вопроса ясно, что я полностью понимаю разницу между ними, возможно, лучше, чем большинство. Мой вопрос заключается в том, есть ли какие-либо обстоятельства, при которых я должен использовать .attr(), что совершенно отличается от вопроса .prop() и .attr().
attr()
в реальном сценарии. - person StriplingWarrior   schedule 06.08.2015attr()
, чтобы узнать, какое значение было там при первой загрузке страницы, при условии, что у вас нет кода, который ошибочно пытается напрямую изменить атрибут. См. jsfiddle.net/7s6qpnv6. - person StriplingWarrior   schedule 06.08.2015.prop()
, если вы знаете свойство, соответствующее атрибуту. Например, вместо использования.attr('checked')
вы можете использовать.prop('defaultChecked')
, чтобы получить начальное значение при загрузке страницы. Затем у вас также есть преимущество в том, что вы получаете логическое значение вместо строки, поэтому вы можете проверить его в операторе if. Я не знаю ни одного примера, но кто-нибудь знает, есть ли какие-либо атрибуты, у которых нет соответствующего свойства, такого как defaultChecked в DOM? - person dallin   schedule 06.08.2015