【问题标题】:HTML - attributes vs properties [duplicate]HTML - 属性与属性 [重复]
【发布时间】:2013-10-15 07:37:29
【问题描述】:

id 是 HTML 的属性或属性吗?

我应该使用$('#selector').attr('id'); 还是$('#selector').prop('id');

看了很多文章,还是一头雾水。

谁能用非常简单的语言向我解释一下 HTML/JS 中的属性和属性之间的区别是什么?

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

属性由 HTML 定义。属性(在 DOM 元素上)由 DOM(以及模糊标记和 DOM 之间界限的 HTML 5)定义。

一些 HTML 属性与属性具有 1:1 映射关系。 id 就是这样的一个例子。

有时名称不同。 class 属性映射到className 属性,value 属性映射到defaultValue 属性(而value 属性没有对应的属性)。

当我最初写这个答案时,我认为有些属性没有 1:1 映射到属性。有了这个更新,我再也想不出任何东西了(并且已经对上面的例子进行了更正)。

【讨论】:

  • 每个属性都对应一个属性吗?属性值和属性值之间是否始终存在初始 1:1 映射?
  • 这是一个很棒的秋葵剃须刀答案。其他页面上的许多其他答案都进入了风袋哲学讲座。这个答案只是为您提供了您需要了解的内容。
【解决方案2】:

是的,attr 用于 html 属性,因为它们是严格定义的。 prop 用于属性。

例如,假设您有一个带有“某物”类的节点元素(原始元素不是 jQuery 对象)。 elem.className 是属性,但它是属性所在的位置。更改类属性也会自动更改属性,反之亦然。

目前,attr 是杂乱无章的,因为它尝试了这两个函数的工作,因此存在许多错误。 jQuery.fn.prop 的引入将解决几个障碍,将代码分开,因为它应该从一开始就分开,并为开发人员提供更快的功能来完成他们期望他们做的事情。

让我补个百分比,说一下,根据我在支持 IRC 和阅读其他代码的经验,attr 的 95% 用例不必切换到 prop。

See More

【讨论】:

    猜你喜欢
    • 2017-01-12
    • 2011-11-29
    • 2023-03-29
    • 1970-01-01
    • 2021-08-24
    • 2016-01-12
    • 2015-09-21
    • 2020-10-17
    • 1970-01-01
    相关资源
    最近更新 更多