66

idHTML 的属性还是属性?

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

我已经阅读了很多文章,但仍然感到困惑。

有人可以用非常简单的语言向我解释 HTML/JS 中的属性和属性之间的区别吗?

4

2 回答 2

144

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

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

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

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

于 2013-10-08T11:40:12.253 回答
4

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

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

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

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

看更多

于 2013-10-08T11:40:34.753 回答