鉴于jQuery的哲学 写得更少,做更多 ,当我看到这一点时,我总是感到惊讶:
$(this).prop('checked')
......而不是:
this.checked
查看最新的jQuery源代码,prop()
为这两个 gotchas 提供了便利:
$(elem).prop('for')
相当于elem.htmlFor
。$(elem).prop('class')
相当于elem.className
。它还将tabIndex
规范化为:
prop()
对于一次设置多个元素的属性以及在单个元素上链接属性非常有用。
但除了标准化prop()
之外,使用tabIndex
设置或检索单个元素上的单个属性是否有任何优势(除了惯用之外) - 特别是当您对元素有引用时(例如回调中的this
?
答案 0 :(得分:5)
.prop
作为一个吸气剂没有真正的优势,事实上,它比直接访问该财产的性能要差。
.prop
的实用性是用作设置器时。
如果您阅读DOC,则可以使用.prop
进行设置。
第一种方法对单个元素没有任何好处(除非存在兼容性问题,否则。)
实际上this.check = true;
与$(this).prop('checked', true)
相同,但更快。
如果你有一套元素,那么就有一个优势。您不必手动循环所有元素,jQuery会为您完成。
当您要更改多个属性时,第二种方法很有用。而不是列出您想要更改的每个属性:
this.prop1=true;
this.prop2=true;
this.prop3=true;
this.prop4=true;
您可以传递这样的对象:
$(this).prop({
prop1 : true,
prop2 : true,
prop3 : true,
prop4 : true
});
第三种方式在我看来是我最喜欢的方式。使用回调函数允许您在一组条件下单独设置每个元素。回调接收2个参数:索引和旧值。
使用函数的一个很好的例子是反转每个复选框的状态:
$('checkbox').prop('checked', function(_, old){
return !old;
});