【发布时间】:2015-04-10 13:53:05
【问题描述】:
鉴于 jQuery 的少写,多做的理念,当我看到这个时,我总是感到惊讶:
$(this).prop('checked')
… 而不是这个:
this.checked
查看最新的jQuery源码,prop()为这两个陷阱提供了便利:
-
$(elem).prop('for')等同于elem.htmlFor。 -
$(elem).prop('class')等同于elem.className。
它还将tabIndex 标准化为:
- 0 用于没有选项卡索引的可选项卡元素。
- -1 用于不可选项卡元素。
prop() 对于一次设置多个元素的属性以及在单个元素上链接属性当然很有用。
但是使用prop() 设置或检索单个元素上的单个属性是否有任何优势(惯用除外),除非在规范化tabIndex 时——特别是当您引用该元素时(例如@987654332 @ 在回调中)?
【问题讨论】:
-
不,没有优势。当你拥有的 only 东西已经是一个 jQuery 对象时,这很方便,但是创建一个新的 jQuery 对象只是为了调用
.prop()是愚蠢的。 -
@px5x2 — 根据此示例从其中读取值时不是。
-
我喜欢这个线程 - 不确定它是否需要答案,但您说明了我只使用 5% 的 jQuery 库的众多原因之一,就像我 5 年前所做的那样。 vanilla 方法甚至对基本的 js 类型都有意义,例如
document.querySelector('input[type=checkbox]')上的已选中属性会给我一个布尔值,因为它正在找到一个复选框,但document.querySelector('div')将是未定义的。 -
@RickHitchcock:有时该表单用于与其余代码保持一致,或者为了不让新手感到困惑,或者在将代码从问题复制到答案时根本没有被编辑。尽管知识更好。
-
jQuery 对某些属性进行了一些更正,例如
src和href在 IE 中,tabIndex,...
标签: javascript jquery