作为一名 jQuery1.9+ 软件开发人员,我可以“弃用”使用attr()
我日常工作中的方法?
正如许多问题所表明的那样,
-
.prop() 与 .attr() https://stackoverflow.com/questions/5874652/prop-vs-attr (main)
- jQuery attr vs. prop,有 props 列表吗? https://stackoverflow.com/q/15057281
- jQuery attr 与 prop? https://stackoverflow.com/q/13247058
- 将 jQuery 1.8.3 迁移到 1.9.0 - 替换已弃用的 .attr() https://stackoverflow.com/q/14602773
- ... ETC。 ...
有很多困惑“使用 attr 还是使用 prop?”,并且,从我(开发人员)的角度来看,对于所有用途attr()
方法,我们可以使用prop
反而:
-
向后兼容:编码新软件不需要这个;
-
表现: 约翰说 http://ejohn.org/blog/jquery-16-and-attr/“通过 .attr() 方法访问属性会比直接通过 .prop() 访问属性稍慢”;
-
更改属性值: 一切都可以通过
prop(name,newvalue)
method.
-
删除属性: 全部可以删除
removeProp(name)
method.
-
检查 HTML 属性值:浏览器使用 DOM,所有 HTML 都被转换为 DOM,并且,如果 DOM 影响了
attr(name)
方法也受到影响。关于 prop 的“强类型”:它比“html 字符串值”更好(例如“checked”与true).
-
检查属性是否已定义在“HTML原始代码”中(假设该方法
attr
在你的浏览器中返回不明确的如果不是)...那么,我们在某些软件中需要这个?At forms http://jquery.com/upgrade-guide/1.9/#attr-versus-prop-, “.val() 方法是获取或设置表单值的推荐 jQuery 方法”
-
跨浏览器一致性:两者(不仅仅是 attr)都是一致的方法。 (这是??)。
所以,在这个时候(2013年),我看不出有什么充分的理由使用attr
开发新的 jQuery 代码时的方法...但是,换句话说,这就是问题:有充分的理由使用attr
我的日常任务中的方法?
.attr()
没有被弃用,因为它的用途是有用的,并且是执行其用途的唯一正确方法(不使用每个元素的getAttribute
函数,它做同样的事情......或者自己解析 HTML)。我们进行此讨论的唯一原因是因为 jQuery(和一些旧浏览器(cough IE cough)) 错误地将属性和特性混为一谈,以及那个糊涂这显然是他们在 1.9 中修复的。
.attr()
检索属性, while .prop()
检索特性。两者是不同的东西,而且官方一直都是不同的(尽管 DOM 通常有一个属性对应于一个属性)。如果你有一个<p whatever="value">
, where whatever
不是浏览器识别的属性,您可以使用.attr()
来获取属性的值。.prop()
甚至无法see在大多数浏览器中。
当你关心生成的 DOM 时property, use .prop()
。当你关心实际的 HTML 时属性, use .attr()
。这并不是一个非此即彼的事情。你可以在相同的代码中使用这两种方法,并且宇宙甚至不会崩溃一次(假设你已经正确使用了它们)。 :) 只需使用适合您当时正在做的工作的那个,不要试图“弃用”没有损坏的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)