attributes vs properties --记于jquery attr不能正确更新input的value值后

  最近作的前端页面是个单页面应用,须要常常给个input赋值什么的。html

 

  我经常使用的方式是$('#id').attr('value','XXXX'),一直能够正常使用。今天忽然发现一个问题,某个要赋值的input标签死活不展现value,查看html代码,神奇的发现value仍是有值的。前端

也就是说,这个input标签的value属性有值,可是不能展现。浏览器

 

  折腾一番后,发现若是使用$('#id').val('XXXX')后,则不出现此问题。dom

 

       网上查找一番后,发现了attributes与properties的区别。htm

 

       简单的讲,当你写html源码时,你能够为你的html标签赋值attribute。而当浏览器解析html生成dom节点时,这个节点就有了properties。用户看到的是浏览器解析并渲染后的页面,也就是说,咱们看到的是dom节点的properties值。get

       一般来说,properties和attribute其中之一发生改变时,另外一个值也会相应的改变。可是惟独Input 标签的 value 值特殊。properties值不会跟随attribute值发生改变。input

 

参考资料:http://stackoverflow.com/questions/6003819/properties-and-attributes-in-html源码

                  http://stackoverflow.com/questions/5874652/prop-vs-attrio

相关文章
相关标签/搜索