我还没有检查过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版本 感谢
答案 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()
的值,因为这会为代码添加额外的兼容性层和未来的证据。