jQuery-attr()和prop()用法总结

今天遇到一个通过身份证的读取,自动选择性别的功能
开始用attr方法设置radio的checked属性,radio确实被添加了checked=“checked”,但是对应的radio并没有被选中
经过搜索之后,发现改为prop方法便可以了,以下就总结一下了解到的关于attr()和prop()的一些总结。


在jQuery 1.6之前, 对于表单元素的checked、selected、disabled等属性,attr()获取这些属性的返回值为Boolean类型:如果被选中(或禁用)就返回true,否则返回false。

jQuery 1.6之后有了porp()。


attr()和prop()的一些区别

操作的对象不同:

  • attr(): 针对的是该文档节点的attribute,包括节点本身已有的固有属性和自定义属性,对应原生中setAttribute和getAttribute。
  • prop():针对的是该DOM元素(Element类型的对象)自身的property,对应原生中obj[name]、obj[checked]

设置属性值类型不同:

  • attr():操作的是文档节点的属性,因此设置的属性值只能是字符串类型,如果不是字符串类型,也会调用其toString()方法,将其转为字符串类型
  • prop():设置的属性值可以为包括数组和对象在内的任意类型

初始状态值和实时状态值:

jQuery认为:

  • attr():对应attribute的checked、selected、disabled就是表示该属性初始状态的值
  • prop():对应property的checked、selected、disabled才表示该属性实时状态的值(值为true或false)。

版本:

  • attr():是从1.6之前就使用的方法,1.6版本之前该函数不仅承担了attribute的设置和获取工作,还同时承担了property的设置和获取工作。(在jQuery 1.6之前,attr()也可以设置或获取tagName、className、nodeName、nodeType等DOM元素的property)
  • prop():1.6版本之后才有,用来承担property的设置或获取工作,使得attr()才只用来负责attribute的设置和获取工作。

使用建议

在jQuery 1.6及以后版本中,请使用prop()函数来设置或获取checked、selected、disabled等属性。对于其它能够用prop()实现的操作,也尽量使用prop()函数

总结

最开始先是看到一个博客说的是,自定义的属性就用attr(),固有的属性就使用prop(),多看了几篇才发现不是很正确呀。
想想像我这样水平的js菜鸟也会时不时写几个博客,可想而知,博客内容出错的可能性还是很大的。
那我以前遇到不会的知识点搜到博客就完全相信的行为蛮傻的。。
所以大家在看博客时候还是不要盲目的去相信才好。
希望大家遇到错误多多指正吧,共同进步。

猜你喜欢

转载自blog.csdn.net/DeepHugY/article/details/82223894
今日推荐