可能重复:
.prop() vs .attr()
给定jQuery中的新.prop()
方法,这是创建具有特定字段的新元素的首选方法,例如一个链接:
$('<a>').prop('href', '...');
$('<a>').attr('href', '...');
$('<a href="...">');
我一直倾向于使用#2,但目前还不清楚在DOM中放置的 new 元素现在是否应该使用#1。
答案 0 :(得分:13)
在这种情况下,我会选择attr()
。您正在创建新的<a>
元素并设置其href
HTML属性,因此强调这一点是有意义的。
但是,由于href
属性直接映射到href
DOM属性,因此使用prop()
会产生完全相同的结果。
让我们再举一个例子,与attr()
和prop()
之间的差异更相关:假设您要设置class
元素的<a>
属性而不是href
元素{1}}。您问题中的示例代码变为:
$('<a>').prop('className', '...');
$('<a>').attr('class', '...');
$('<a class="...">');
恕我直言,(2)和(3)使一个人的意图比(1)更清楚。事实上,没有名为class
的DOM属性,因为该标记可能是宿主语言中的保留字,充其量只是一个实现细节。 class
HTML属性通常是我们在该上下文中考虑的内容。
当然,有些情况恰恰相反,例如:使用“布尔”HTML属性时,例如checked
或disabled
。在这种情况下,设置强类型DOM属性而不是创建定义较少的HTML属性会更加健壮。
答案 1 :(得分:7)