jQuery-如何理解jQuery中的prop函数?对之前使用attr的代码有何影响?如何规避负面影响?

发布于 2017-01-10 20:02:32 字数 0 浏览 1227 评论 3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

瑾兮 2017-08-23 20:50:40

prop函数是在JQuery 1.6 Release时加入的,主要目的是使attributes和properties的概念区分开来。

DOM对象大部分的property都有对应的attribute,名字也基本一样(也有例外,如“class”这个attribute对应的property名字为“className”),这些property也和其对应的attribute保持一样的状态或值。但一些Boolean类型的属性(如checked, selected, disabled等)有些特殊,其attribute只保留初始值(默认值), property才是当前最新的状态或值。如一个默认勾选的checkbox,当你在页面去除勾选的时候,checked这个property已由true变为false,而checked这个attribute仍然保持“checked”这个初始值。由此可见attribute和property完全不是同一个东西,但“通用”的attr方法似乎在某种程度上模糊了这个区别。

而JQuery为了向后兼容,在1.6.1中又使attr恢复了以前的功能,因此$("#foo").attr("checked",true)也是没问题的,但更推荐$("#foo").prop("checked",true),这样的好处是概念上更清楚,性能相比也得到部分提升(请参考John Resig自己的解释:jQuery 1.6 and .attr())。

归属感 2017-05-27 04:34:06

.prop()方法应该被用来处理boolean attributes/properties以及在html(比如:window.location)中不存在的properties。其他所有的attributes可以而且应该继续使用.attr()方法来进行操作。

浮生未歇 2017-03-08 03:55:33

使用prop方法获取属性则统一返回true和false,使用attr,如checked='checked'时,为true,没有选中时,则为undefined
大多数情况下,原先attr能正常工作,不会对attr有什么大影响

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文