HTML - 属性与属性

HTML - attributes vs properties

本文关键字:属性 HTML      更新时间:2023-09-26

id是HTML的属性还是属性?

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

我读了很多文章,仍然感到困惑。

有人可以向我解释一下HTML/JS中的属性和属性之间的区别吗?

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

某些 HTML 属性与属性的 1:1 映射。 id就是一个例子。

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

当我最初写这个答案时,我认为有些属性没有 1:1 映射到属性。通过此更新,我再也想不出任何(并且对上述示例进行了更正)。

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

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

目前,attr 混乱且令人困惑,因为它已经尝试了这两个功能的工作,因此存在许多错误。 jQuery.fn.prop的引入将解决几个阻塞问题,从一开始就应该分开的代码,并为开发人员提供更快的函数来完成他们期望他们做的事情。

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

查看更多