美文网首页
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()函数。

相关文章

  • 前端学习笔记

    jQuery中attr()和prop()的使用和区别 一、attr()使用 $(selector).attr():...

  • 总结3

    1.jQuery中attr和prop的区别 那么,什么时候使用attr,什么时候使用prop?? 1.添加属性名称...

  • Jquery中的`attr`和`prop`的区别

    Jquery中的attr和prop的区别 测试唤醒: Google attr和prop的作用和区别   attr和...

  • jquery 细节问题

    操作布尔属性 jquery操作以下元素的属性: 方法 jquery中attr和prop的区别 固有属性使用prop...

  • jquery使用(三):常用方法区分

    一、关于jQuery中html()、text()和val()的区别 二、jQuery中attr()和prop()的...

  • attr和prop在Jquery中的使用

    一直用的都是attr,但是当动态改变复选框或者单选框的值的时候,初始化的时候,是可以获取到值的,但是初始化之后,再...

  • jQuery之attr和prop比较

    jQuery之attr和prop比较(基于jQuery-1.11.0) 先上图,有图有真相。 一、attr(att...

  • Jquery的attr()和prop()使用

    使用的控件涉及到checkbox,radio的默认选中时,因为之前用的是attr("checked",true)然...

  • [jQuery]attr()和prop()的使用

    如果在checkbox中添加checked="checked",则attr()返回checked,prop()返回...

  • Jquery中的prop()和attr()

    前言:今天是我第二次犯这个错了,所以在这里把它记录下来,加深记忆!!! 案例:今天在给一个radio默认选中的时候...

网友评论

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

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