是否有任何情况下,我必须使用.attr()超过.prop()



据我所知,.prop()函数可以做.attr()函数所能做的一切,但通常以更安全和更简单的方式。

例如:

  • 如果我想在HTML中获得复选框的默认状态,我可以做$('myCheckbox').prop('defaultChecked')(而不是$('myCheckbox').attr('checked'))。这实际上似乎比使用.attr('checked')更安全,因为属性可以失去它的值,如果复选框是动态改变的,而.prop('defaultValue')保持值(例如http://jsfiddle.net/p1Lrgwnb/1/)
  • 尽管我经常看到.attr()与StackOverflow示例中的idname等值一致使用,但.prop()也可以很好地与这些值一起使用。除了传统惯例和习惯,我不知道.attr()似乎更喜欢这些价值观的任何原因。

是否有一个用例,我需要使用.attr().prop()函数不会给我我需要的信息?

EDIT:这个问题与.prop().attr()的区别无关。我在StackOverflow上深入研究了这些问题,包括下面的链接(stackoverflow.com/questions/5874652/prop-vs-attr)。从我的问题中可以清楚地看出,我完全理解了两者之间的区别,可能比大多数人都更好。我的问题是,是否有任何情况下,我必须使用。attr(),这是一个完全不同的问题。prop() vs .attr()。

<input id="check1" checked="checked" type="checkbox" />
.attr('checked') //returns  checked
.prop('checked') //returns  true
.is(':checked') //returns true

prop方法返回布尔值,用于检查,选择,禁用,只读等,而attr返回定义字符串。所以,你可以直接在if条件中使用。prop(' checked ')。

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

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

查看此链接

最新更新