有什么情况我必须使用.attr()over .prop()吗?

dal*_*lin 5 javascript jquery attributes prop attr

据我所知,.prop()函数可以执行.attr()函数可以执行的所有操作,但通常更安全,更简单.

例如:

  • 如果我想获取HTML中复选框的默认状态,我可以$('myCheckbox').prop('defaultChecked')(而不是$('myCheckbox').attr('checked')).这实际上似乎比使用更安全.attr('checked'),因为如果动态更改复选框,属性可能会丢失它的值,同时.prop('defaultValue')保持值(例如http://jsfiddle.net/p1Lrgwnb/1/)
  • 虽然我经常看到.attr()有值,如坚持使用id,并name在计算器上的例子,.prop()正常工作与那些为好..attr()除了传统的惯例和习惯之外,我不知道任何理由似乎更适合这些价值观.

是否有一个用例我需要使用.attr()或该.prop()功能不会给我所需的信息?

编辑:这个问题与.prop()和之间的区别无关.attr().我已经深入研究了StackOverflow上的这些问题,包括下面链接的问题(stackoverflow.com/questions/5874652/prop-vs-attr).从我的问题来看,很明显我完全理解两者之间的差异,可能比大多数人更好.我的问题是在任何情况下我必须使用.attr(),这是一个完全不同的问题,来自.prop()vs .attr().

Shi*_*hna 3

<input id="check1" checked="checked" type="checkbox" />\n.attr(\'checked\') //returns  checked\n.prop(\'checked\') //returns  true\n.is(\':checked\') //returns true\n
Run Code Online (Sandbox Code Playgroud)\n\n

prop 方法返回已检查、选定、禁用、只读等的布尔值,而 attr 返回定义的字符串。因此,您可以在 if 条件中直接使用 .prop(\xe2\x80\x98checked\xe2\x80\x99) 。

\n\n

.attr() 在内部调用 .prop(),因此 .attr() 方法会比直接通过 .prop() 访问它们稍慢。

\n\n

对于 jQuery 1.6+,主要使用 prop,因为它比 attr 更简单且更广泛。在大多数老项目中,attr用于获取元素当前的状态信息。但现在 prop 已经承担了这项工作,attr 将被 prop 取代。

\n\n

检查此链接

\n