阅读了有趣的 .prop() vs .attr() 和 jQuery性能:属性 后,我对使用什么更好:.prop() 还是 .val() 产生了疑问?我想设置一个输入文本值。
jQuery .prop()页面 上说:
“属性通常会影响DOM元素的动态状态,而不改变序列化的HTML属性。例如,input元素的value属性,inputs和buttons的disabled属性,或checkbox的checked属性。应该使用.prop()方法来设置disabled和checked,而不是.attr()方法。应该使用.val()方法来获取和设置value。”
但是关于 .prop() 的性能,似乎比 .val() 更适合设置值:
所以我没有答案。我该怎么做?
编辑2:
我已经尝试了获取值,而且.prop()更快
编辑3:
正如@BeatAlex所说,如果我们想要性能,本地js是极其快速的
“属性通常会影响DOM元素的动态状态,而不改变序列化的HTML属性。例如,input元素的value属性,inputs和buttons的disabled属性,或checkbox的checked属性。应该使用.prop()方法来设置disabled和checked,而不是.attr()方法。应该使用.val()方法来获取和设置value。”
但是关于 .prop() 的性能,似乎比 .val() 更适合设置值:
![.prop() vs .attr() vs .val()](https://istack.dev59.com/lVnjZ.webp)
$('#element').prop('value', 'Example');
或者
$('#element').val('Example');
编辑1:
.prop()始终优于.val()
![enter image description here](https://istack.dev59.com/PXhRD.webp)
![enter image description here](https://istack.dev59.com/hpn3P.webp)
![enter image description here](https://istack.dev59.com/1q7x4.webp)
![enter image description here](https://istack.dev59.com/m8U0y.webp)
var x = document.getElementById('element').value;
正如你们中的一些人所说,这可能会更快,但如果.val()存在,我们将使用它。
PS:在我写这篇文章时,当前的jQuery版本是1.11或2.1
val()
,因为它是一个获取值的函数(显而易见),并且该函数的操作可能在未来发生更改,但您的代码则不需要更改。 - Reinstate Monica Cellio