【发布时间】:2014-04-01 08:37:11
【问题描述】:
在阅读(有趣的).prop() vs .attr() 和 jQuery Performance : attributes 之后,我的脑海中出现了关于哪个更好用的疑问: .prop() 还是 .val() ?我想设置一个输入文本值。
jQuery .prop() page 说如下:
属性通常会影响 DOM 元素的动态状态,而不会更改序列化的 HTML 属性。示例包括输入元素的 value 属性、输入和按钮的 disabled 属性或复选框的 checked 属性。应该使用 .prop() 方法来设置禁用和检查,而不是 .attr() 方法。 .val() 方法应该用于获取和设置值。
但关于 performance .prop() 似乎比 .val() 设置值更好:
所以我没有答案。 我该怎么办?
$('#element').prop('value', 'Example');
或
$('#element').val('Example');
EDIT1: .prop() 总是比 .val() 好
EDIT2: 我现在试过getting a value,.prop() 也更快
EDIT3: 正如@BeatAlex 所说,如果我们想要性能原生 js 是 extremely faster
var x = document.getElementById('element').value;
正如你们中的一些人所说,它可能会更快,但如果 .val() 存在,我们会使用它。
PS:在我写这篇文章时,当前的 jQuery 版本是 1.11 或 2.1
【问题讨论】:
-
我推荐使用
val(),纯粹是因为它是一个获取值的函数(duh),并且该函数的操作将来可能需要更改,但您的代码不会。跨度> -
别担心这种性能,你永远不必一次设置数千个元素的值,至少,你不应该
-
我刚刚发现了 .prop() 的存在,我正在寻找好的做法:-)
标签: javascript jquery performance