在早期的 jQuery 版本中,都是使用 attr() 来访问对象的属性,比如取一个图片的 alt 属性,就可以这样做 $("#img").attr("alt")。但是,在某些时候,比如访问 input 的 disabled 属性的时候,会有些问题。

在某些浏览器里,只要写了 disabled 属性就可以,而另外一些浏览器则要写:disabled = "disabled"。所以,从1.6版开始,jQuery 提供新的方法 prop() 来获取这些属性。

使用 prop() 的时候,返回值是标准属性:true/false,比如:$("#checkbox").prop("disabled"),不会返回"disabled"或者"",只会返回 true/false。当然赋值的时候也是如此。这样,便统一了所有操作,无论是从语法还是语义上。

那么,哪些属性应该用 attr() 访问,哪些应该用 prop() 访问呢?主要按照下面的两条原则:

  • 第一个原则:只添加属性名称该属性就会生效应该使用 prop() ;
  • 第二个原则:只存在 true/false 的属性应该使用 prop() ;

按照官方说明,如果是设置 disabled 和 checked 这些属性,应使用 prop() 方法,而不是使用 attr() 方法。

标签: none

添加新评论