这是jquery 3.1中的错误吗?

时间:2017-11-23 12:52:31

标签: javascript jquery

我还没有检查过jquery的其他版本..我碰巧正在做一个计时器并遇到了这个问题,我在这里以尽可能少的代码再现:

document.getElementById("slider").value = testnum;

When you click on the slider it will go back to the original position

$('#slider').attr('value', testnum);

when you click on the slider it will NOT go back to the position

我在几个浏览器中检查过,我没有IE检查.. 非常直截了当的问题。我的项目涉及最多数十亿美元,所以当有人改变价值并且它不再开始计数时,它会令人讨厌。除非我做错了,否则我只会使用javascript版本 感谢

2 个答案:

答案 0 :(得分:4)

不,这不是错误。 value 属性不是输入的当前值,而是输入的默认值。*使用jQuery访问当前值的正确方法是与val。 (或者,如果您愿意,prop$(...).prop("value");

*这与DOM元素的value 属性不同,后者是其当前值; value 属性由元素上的defaultValue属性反映。

为清楚起见:

$("#the-btn").on("click", function() {
  // The jQuery wrapper for the input
  var $input = $("#the-input");
  // The DOM element
  var input = $input[0];
  console.log("$input.val(): ", $input.val());
  console.log("$input.prop('value'): ", $input.prop('value'));
  console.log("$input.attr('value'): ", $input.attr('value'));
  console.log("input.value: ", input.value);
  console.log("input.defaultValue: ", input.defaultValue);
  console.log("input.getAttribute('value'): ", input.getAttribute('value'));
});
Type something different in the input, then click the button:
<input type="text" id="the-input" value="foo">
<input type="button" id="the-btn" value="Click Me">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 1 :(得分:0)

属性 - 参数包含最初在DOM中创建元素的内容(在创建元素时从对象参数开始)。

属性 - 与DOM元素关联的某些内容的当前值(从对象属性开始)。

这不是错误。

对于使用$().val()的值,因为这会为代码添加额外的兼容性层和未来的证据。