jquery中attr和prop的区别分析

2025-03-13 19:05:14
推荐回答(1个)
回答1:

二者都可以获取dom的属性,但是参数不同:

  • attr : 获取匹配的元素集合中的第一个元素的属性的值 或 设置每一个匹配元素的一个或多个属性。

  • .attr( attributeName, value )

  • .attr( attributes )

  • .attr( attributeName, function(index, attr) )

  • .attr( attributeName )

  • .attr( attributeName, value )

  • prop : 获取匹配的元素集中第一个元素的属性(property)值或设置每一个匹配元素的一个或多个属性。

  • .prop( propertyName, value )

  • .prop( properties )

  • .prop( propertyName, function(index, oldPropertyValue) )

  • .prop( propertyName )

  • .prop( propertyName, value )

attr传入的是attributeName,而prop传入的是propertyName,现在我们的问题转移了,我们需要研究的是attributeName和propertyName之间的区别了。

Attributes vs. Properties

在这里,可以将attribute理解为“特性”,property理解为为“属性”从而来区分俩者的差异。 如果把DOM元素看成是一个普通的Object对象,这个对象在其定义时就具有一些属性(property),比如把select的option当做一个对象:

var option = { selected:false, disabled:false, attributes:, ...}

现在,我们一目了然了,attribute是一个特性节点,每个DOM元素都有一个对应的attributes属性来存放所有的attribute节点,它是一个类数组的容器。attributes的每个数字索引以名值对(name=”value”)的形式存放了一个attribute节点。而property就是一个属性,是一个以名值对(name=”value”)的形式存放在Object中的属性。