美文网首页
attr和prop在Jquery中的使用

attr和prop在Jquery中的使用

作者: lvyweb | 来源:发表于2017-05-05 11:15 被阅读30次

    一直用的都是attr,但是当动态改变复选框或者单选框的值的时候,初始化的时候,是可以获取到值的,但是初始化之后,再去改变复选框的值的时候,发现undefined。究其原因。原来是Jquery1.6版本之后attr和prop是有差别的,具体介绍如下:


    先说区别

    • 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
    • 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

    相比attr,prop是1.6.1才新出来的,两者都是获取/设置属性的方法(attributes和properties)。只是,window或document中使用.attr()方法在jQuery1.6之前不能正常运行,因为window和document中不能有attributes。prop应运而生了。

    像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。

    什么时候使用attr(),什么时候使用prop()

    根据官方的建议:具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()

    注意

    • 对于表单元素的checked、selected、disabled等属性,在jQuery 1.6之前,attr()获取这些属性的返回值为Boolean类型:如果被选中(或禁用)就返回true,否则返回false。
    • 但是从1.6开始,使用attr()获取这些属性的返回值为String类型,如果被选中(或禁用)就返回checked、selected或disabled,否则(即元素节点没有该属性)返回undefined。并且,在某些版本中,这些属性值表示文档加载时的初始状态值,即使之后更改了这些元素的选中(或禁用)状态,对应的属性值也不会发生改变。
    • 因此,在jQuery 1.6及以后版本中,请使用prop()函数来设置或获取checked、selected、disabled等属性。对于其它能够用prop()实现的操作,也尽量使用prop()函数。

    相关文章

      网友评论

          本文标题: attr和prop在Jquery中的使用

          本文链接:https://www.haomeiwen.com/subject/pubjtxtx.html