Насколько мне известно, функция .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