jQuery 的 attr() 和 prop()

jQuery 从 1.6 开始引入了 prop() 方法,跟 attr() 方法相似,都是用来取得 DOM 元素的属性值,之前 jQuery 将它们分得并不清楚,许多 prop() 的功能被 attr() 代替,但其实它们是有一些不同的。首先应当分清楚属性(property)和特性(attribute)的区别:

property 指的是 DOM 元素对象上的各个属性,例如 id, type, nodeName, nodeType, selectedIndex, innerHTML 等等,可以直接用 elem.nodeName$(elem).prop('nodeName') 的方式取得。而 attribute 则是指定义在 HTML 标记上的属性。比如一个元素:

<input id="input" type="checkbox" checked="checked" />

其中的 id, typechecked 都是 attribute,可以用原生的 getAttribute() 方法获取,也可以用 jQuery 的 attr(),当然这里的 idtype 比较特殊,既是 attribute,也有相应的 property。

实际使用中,如果分不清它们的区别就有可能出错,比如用来获取一个复选框的状态的时候:
阅读全文 »

flight