可能是重复问题:
.prop() vs .attr()
考虑到jQuery中新的.prop()
方法,哪种方法更适合使用特定字段创建一个新元素,例如链接:
$('<a>').prop('href', '...');
$('<a>').attr('href', '...');
$('<a href="...">');
我经常使用第2个选项,但不清楚将要放置在DOM中的新元素是否应该使用#1。
可能是重复问题:
.prop() vs .attr()
考虑到jQuery中新的.prop()
方法,哪种方法更适合使用特定字段创建一个新元素,例如链接:
$('<a>').prop('href', '...');
$('<a>').attr('href', '...');
$('<a href="...">');
我经常使用第2个选项,但不清楚将要放置在DOM中的新元素是否应该使用#1。
attr()
。您正在创建一个新的<a>
元素并设置其href
HTML属性,因此强调这一点是有意义的。href
属性直接映射到href
DOM属性,使用prop()
将具有完全相同的效果。attr()
和prop()
之间的区别:假设你想设置<a>
元素的class
属性而不是href
。在您的问题中,示例代码变为:
$('<a>').prop('className', '...');
$('<a>').attr('class', '...');
$('<a class="...">');
class
的DOM属性,因为该标记可能是主机语言中的保留字,至少是实现细节。在这种情况下,class
HTML属性通常是我们所考虑的。checked
或disabled
这样的“布尔”HTML属性时。在这种情况下,设置强类型DOM属性会比创建不太明确定义的HTML属性更加健壮。通常我会这样创建a标签:
$('<a>', {href: '...'});
在元素开始处添加尽可能多的属性。(是的,是属性
,不是属性)
因此,您可以对输入框等项目执行相同的操作:
$('<input>',{
name: 'some_name',
id: 'some_id',
value: item_value,
readonly: 'true',
style: 'background: #eee;',
size: 15
});
或者实际的 div 标签:
$('<div>',{
id: 'some_id',
text: 'this will be inside the div'
});
class:'some-class',type:'text'
。至少对于.prop(),您需要使用className而不是class。 - Bob Stein