是id
HTML 的属性还是属性?
我应该做$('#selector').attr('id');
还是$('#selector').prop('id');
我已经阅读了很多文章,但仍然感到困惑。
有人可以用非常简单的语言向我解释 HTML/JS 中的属性和属性之间的区别吗?
是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 用于属性。
因此,例如,假设您有一个带有“某物”类的节点元素(原始元素不是 jQuery 对象)。elem.className 是属性,但它是属性所在的位置。更改类属性也会自动更改属性,反之亦然。
目前, attr 是混乱和混乱的,因为它已经尝试了这两个函数的工作并且因此存在许多错误。jQuery.fn.prop 的引入将解决几个障碍,将代码分开,因为它应该从一开始就分开,并为开发人员提供更快的功能来完成他们期望他们做的事情。
让我补一个百分比,并说根据我在支持 IRC 和阅读其他代码的经验,95% 的 attr 用例不必切换到 prop。