关于 jQuery 中的 prop 和 attr

  1. 尽量使用 prop,而不是 attr
    在一些 DOM 的常用操作中这两者接近等价(要不然也不会这么容易搞混),但是 attr 在某些 element 的属性上可能不会像你想象的那样(比如 input 的 checked),使用 prop 可以避免这种情况。
  2. attribute (基本上)是 string 的
    attribute 就是你写在 HTML 中 element 的那些“属性”,像这样:

    <input type="hidden" name="type" value="file" crazy-attr="xxxx">

    这个 input 的 attributes 有 type/name/value/crazy-attr,这些“属性”的赋值除了被引号围着,就没有其它的类型声明,那它们只能是 string 的。另外,注意到没有你可以给 element 设定各种奇怪的任意名字的 attribute,而不是非得按照控件的属性来。
    你所设定的 attribute 会保存在 element.attributes 数组中。

  3. property 是定义在 DOM 类中的
    每个 element 都是 DOM 对象,都有它对应 DOM 的类,这个类里所声明的就是这个 element 的 property