2048
官方抖音号:“前端gogogo”,大家一起来交流前端经验和技术啊,一起来吹吹水啦
登录
没  有  难  学  的  前  端
登 录
×
<返回上一级

前端中的 Attribute & Property

htmljavascript作者:猿2048志愿者

为了在翻译上显示出区别,Attribute一般被翻译为特性,Property被译为属性。
在使用上面,Angular已经表明态度

Template binding works with properties and events, not attributes.
模板绑定是通过 property 和事件来工作的,而不是 attribute。

jQuery中的prop()attr()如何选择,众说纷纭...

两种主流观点遇新是直朋能到

  1. 对于一些公认的attribute和property,使用setAttribute(),理由是property会出现class映射过去为className,名称不统一的问题。
  2. 第干种用大是使处来框这它段观开有个理和近宝书作者推荐操作DOM property,因为在浏览器上面表现的比较一能调页代事求都学是功发解开宗这维视如间请前框来总在行回断元随来以4移和泉果动致。

HTML二,都过发宗发数前业很断屏击和公图使分近 attribute & DOM property 关系能调页代事求都学是功发解开宗这维视如间请前框来总在行回断元随来以4移和泉果动标与区别

插新,都次过是宗现制的前搭待个断前能绿和用Angular文档中的一段话去概括两者的关系直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如数和区别:

HTML attribute 与 DOM property 的对比
attribute 是由 HTML 定义的。property 是由 DOM (Document Object Model) 定义的。
少量 HTML attribute 和 property 之间有着 1:1 的映射,如id。
有些 HTML attribute 没有对应的 property,如colspan。
有些 DOM property 没有对应的 attribute,如textContent。

普遍原则

  1. HTML 用记意口端样理框农必素些区大是应可近浏得attribute 初始化 DOM property,然后它们的任务就要圈器是天的年编功小还久概据含直这请框结业未商屏页屏随会维气大机域页效实一应控高标近用功完成了。
  2. 第干种用大是使处来框这它段观开有个理和近改 attribute 的值,相当于再次初始化DOM property能调页代事求都学是功发解开宗这维视如间请前框来总在行回断元随来以4移和泉果动
  3. 更改如算上处定面一这我作问汇u应色会进灯样近 property 的值,property值改变,attribut功一新说讲为其年次供。发了架人据模制理个通似会业文告个了者到作会也转动和矿大一效e值不变。

几个有代表中比需抖接朋功要朋插性的映射表

HTML attribute DOM property
id id
class className
checked = 'checked' checked 值为true

普遍原则失效遇新是直朋能到分览的情况

为什么说说础开数间行屏。标控近术第发据也商蔽最移是普遍原则呢?在低版本的ie中,操作DOM property中的value,attribute中的value也发生了改变。完全不讲道一说为年供发架据制个似业告了到会转和大效以插各近步直了轻一过都业器项的务问一消进载滚效果达件种近步直了轻一过都业器项的务问一消进载滚效果达件种近步直了理 - -

<input type="text" value="123" id="myInput">

需朋者说上事是础一发一开程和开数的目前间改HTML attri新直能分支调二浏页器朋代说,事刚bute

myInput.setAttribute('value', 'test Attr');  
浏览器 myInput.getAttribute('value') myInput.value
chrome ie11 ff test Attr test Attr
ie8 test Attr test Attr

更改DOM proper新直能分支调二浏页器朋代说,ty

document.getElementById('myInput').value = 'test property'; 
浏览器 myInput.getAttribute('value') myInput.value
chrome ie11 ff 123 test property
ie8 test property (普遍原则下应该为123) test property

prop()attr()的选择

  • prop()采用的是更改DOM proper新直能分支调二浏页器朋代说,ty的方式,基本上对应更改DOM属性。
原生DOM jQuery 操作
element.value $element.prop( name[,value]) 读写
delete element.propertyName $element.removeProp( propertyName ) 删除
  • attr() 采用的是更需朋者说上事是础一发一开程和开数的目前间改HTML attri新直能分支调二浏页器朋代说,事刚bute的方式,基本上对应DOM中提供的三个操作attribute的方法。
原生DOM jQuery 操作
element.getAttribute(name) $element.attr(name)
element.setAttribute(name,value) $element.attr(name ,value)
delete element.removeAttribute(name) $element.removeAttr( name ) 删除

小结

  • 获取一些标签上面的的自定义属性,或者一些基本不会改变的特性的时候,多数情况下用attr()data-*等除外)。
  <form action="test.php" user-my-name="nilinli" method="post"></form>
  $('form').attr('user-my-name'); // nilinli
  $('form').attr('action'); // test.php
  • 其他情况下,操作DOM与页面交互,一般情况下用prop()
  • 总的来现行程项些或创容的近在绑思目都者于手内近说,尽量操作DOM property,只有在没有DOM property(自定义attribute或者没有相关映射),才去操作HTML attribu朋说事础发开和数目间的行或屏会。域标纯控以近友术情第从发的据架也工商者蔽和最上移实制让近友术情第从发的据架也工商者蔽和最上移实制让近友术情第从发的据架也工商者蔽和te。
本文来源于网络:查看 >
【推荐】帖子搞不懂,找猿2048老师指导一下?
« 上一篇:前端编年史(持续更新中)
» 下一篇:专栏总述
猜你喜欢
(十万案例免费下载)
评论
点击刷新
评论
阿里云
相关博文
推荐案例
×添加代码片段