在这篇《jQuery如何获取HTML标签中的自定义属性和固有属性?》文章中,已经有介绍过了jQuery中attr与prop方法,但是实际上在使用中,用attr好像是都可以获取到,也没有感受到这两个方法之间到底有区别,为什么获取到属性还要那么麻烦,还要分两个方法来获取着实有点摸不着头脑,那么接下来小编就拿个真实的案例,给大家说下究竟为何要用这两个方法。
比如下面的这个判断复选框是否选中的例子:
<input id="test" type="checkbox" />
如果使用prop方法去获取的话,结果正确,而如果用attr方法去获取的话,结果为undefined
,也就是不正确的。
$("#test").prop("checked");//正确结果,可通过不断地勾选/不勾选来判断结果是否实时正确哦。 $("#test").attr("checked");//不正确的结果
类似的像checkbox,radio,select这类的HTML标签也是有这样的特殊情况的,所以大家还是要根据官方的文档去使用方法啊,这样才能避免踩坑。
所以敲黑板了,固有属性用prop方法去获取,自定义属性用attr方法去获取,准没错。
参考资料
https://www.cnblogs.com/Showshare/p/different-between-attr-and-prop.html
20222.2.16补充更新
今天在给HTML标签设置一个自定义属性的时候,使用了prop方法,然后就出现了意外的情况,也就是这个自定义属性在HTML标签上并没有出现,而是到元素对象上,这里可能有些朋友不太理解到了对象上是什么意思,大家可以直接点我查看,我就不再多做解释了。
究其原因还是我用错了方法,没有遵循固有属性用prop,自定义属性用attr方法原则(也就是上面说的),导致出现了意外的错误,所以大家在使用的时候还是要多注意哈。