jQuery创建元素 - 另一个.attr()vs .prop()问题

时间:2011-05-04 14:58:41

标签: jquery attributes

  

可能重复:
  .prop() vs .attr()

给定jQuery中的新.prop()方法,这是创建具有特定字段的新元素的首选方法,例如一个链接:

  1. $('<a>').prop('href', '...');
  2. $('<a>').attr('href', '...');
  3. $('<a href="...">');
  4. 我一直倾向于使用#2,但目前还不清楚在DOM中放置的 new 元素现在是否应该使用#1。

2 个答案:

答案 0 :(得分:13)

在这种情况下,我会选择attr()。您正在创建新的<a>元素并设置其href HTML属性,因此强调这一点是有意义的。

但是,由于href属性直接映射到href DOM属性,因此使用prop()会产生完全相同的结果。

让我们再举一个例子,与attr()prop()之间的差异更相关:假设您要设置class元素的<a>属性而不是href元素{1}}。您问题中的示例代码变为:

  1. $('<a>').prop('className', '...');
  2. $('<a>').attr('class', '...');
  3. $('<a class="...">');
  4. 恕我直言,(2)和(3)使一个人的意图比(1)更清楚。事实上,没有名为class的DOM属性,因为该标记可能是宿主语言中的保留字,充其量只是一个实现细节。 class HTML属性通常是我们在该上下文中考虑的内容。

    当然,有些情况恰恰相反,例如:使用“布尔”HTML属性时,例如checkeddisabled。在这种情况下,设置强类型DOM属性而不是创建定义较少的HTML属性会更加健壮。

答案 1 :(得分:7)