Attribute 和 Property 区别

attribute 是我们在 html 代码中经常看到的键值对, 例如:

<input id="the-input" type="text" value="Name" />

上面代码中的 input 节点有三个 attribute:

  • id : the-input
  • type : text
  • value : Name

property 是 attribute 对应的 DOM 节点的 对象属性 (Object field), 例如:

HTMLInputElement.id === 'the-input'
HTMLInputElement.type === 'text'
HTMLInputElement.value === 'Name'

attribute 更倾向于不可变更的

property 更倾向于在其生命周期中是可变的

attribute 指的是dom属性,property 指的是对象属性,相互关键却不一定相等。

prop的一部分属性通过set关联attr。
attr属性修改时通过事件更新prop。

如a标签的href属性,在attr里可以不写http和其他前缀,还可以用相对路径,但是在prop里就会自动转换成绝对路径,然后修改prop时,attr会同步修改,且值和prop完全相同。修改attr时,不论attr设置的是什么,prop始终都会更新为绝对路径。

attr和prop怎么选择?

对于HTML元素自带的固有属性,在处理时,使用prop方法。快速,准确。

对于HTML元素我们自定义的DOM属性,在处理时,使用attr方法。

例子
<input id="password1" type="checkbox" />记住密码
<input id="password2" type="checkbox" checked="checked" />记住密码

像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。如果没有相应的属性,attr()函数返回值是 undefined。

$("#password1").prop("checked");// false
$("#password2").prop("checked");// true
 
$("#password1").attr("checked"); //undefined
$("#password2").attr("checked"); //"checked"

对与具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值