是id
HTML 的属性还是属性?
我应该做$('#selector').attr('id');
还是$('#selector').prop('id');
看了很多文章,还是一头雾水。
有人可以用非常简单的语言向我解释 HTML/JS 中的属性和属性之间的区别吗?
是id
HTML 的属性还是属性?
我应该做$('#selector').attr('id');
还是$('#selector').prop('id');
看了很多文章,还是一头雾水。
有人可以用非常简单的语言向我解释 HTML/JS 中的属性和属性之间的区别吗?
属性由 HTML 定义。属性(在 DOM 元素上)由 DOM 定义(还有 HTML 5,它模糊了标记和 DOM 之间的边界)。
某些 HTML 属性具有到属性的 1:1 映射。id
就是这样的一个例子。
有时名称不同。的class
属性映射到className
属性和value
属性映射到defaultValue
属性(当value
属性没有对应的属性)。
当我最初写这个答案时,我认为存在没有 1:1 映射到属性的属性。有了这个更新,我再也想不起来了(并且对上面的例子做了更正)。
是的,attr 用于 html 属性,因为它们是严格定义的。prop 用于属性。
例如,假设您有一个节点元素,其类为“something”(原始元素不是 jQuery 对象)。elem.className 是属性,但它是属性所在的位置。更改类属性也会自动更改属性,反之亦然。
目前,attr 是混乱和混乱的,因为它试图同时完成这两个功能的工作,因此存在许多错误。jQuery.fn.prop 的引入将解决几个阻塞问题,分离代码,因为它应该从一开始就分开,并为开发人员提供更快的功能来完成他们期望他们做的事情。
让我先补一个百分比,然后说根据我在支持 IRC 和阅读其他代码方面的经验,attr 的 95% 用例将不必切换到 prop。