MCCF

prop 和 attr 均可获取属性值,但 prop 不扫描源码来获取而是根据页面的信息。

比如:

<img src="https://www.runoob.com/images/pulpit.jpg" />

该图片的实际宽度为 284。

如果页面只有这一张图片,那么 $("img").attr("width") 将返回 undefined,因为页面源代码中没有设置 width 属性。但是用 $("img").prop("width") 可返回 284,因为浏览器直接显示图片的实际宽度,用户实际看到的宽度就是 284。

理论上,prop 更快。但很遗憾,它是扫描浏览器所实际显示的数据,仅可用于浏览器可识别的属性。比如:

<p tinyval="12"></p>

由于 tinyval 并非HTML标准属性,因此 $("p").prop("tinyval") 无法获取到任何值。

但 attr 不受限制。$("p").attr("tinyval") 会扫描源码并获取到 "12" 的结果。

因此,如果您明白代码将做什么,建议使用 attr,它应当能提供更好的重用性和兼容性。