如果我有文本输入并在HTML中设置了默认值,那么在jquery使用.val()
更改当前值之后是否仍然可以访问原始值?
我的理解是jQuery应该更改值 property 而不是值属性?
编辑:注意我不会问我如何存储默认值以便稍后检索它(例如在数据或var中)我对jQuery修改属性的原因感兴趣输入字段(以及defaultValue)而不仅仅是属性。
对于这个例子:
<input id="me" type="hidden" value="starting value" />
<script>
var $field = $('#me');
console.log($field.val());
console.log($field.prop('defaultValue'));
console.log($field.val('new value'));
console.log($field.val());
console.log($field.prop('defaultValue'));
console.log($field.attr('value'));
console.log($field.prop('value'));
</script>
我们看到:
starting value
starting value
[input#me, context: document, selector: "#me", jquery: "2.1.0", constructor: function, toArray: function…]
new value
new value
new value
new value
小提琴:
答案 0 :(得分:1)
jQuery“val”setter总是更改属性和属性。他们这样做是为了不让开发人员混淆不明确的行为。如果您确实只想更改属性并让tag属性具有相同的值,请执行以下操作:
var $input = $("<input>", {value: 'original'}); // Using the jQuery constructor to create a input :)
$input[0].value = "foo"; // Changing the value property of this HTMLInputElement instance
console.log($input.val()); // foo
console.log($input.prop('value')); // foo
console.log($input.attr('value')); // original
这样,您只更改了HTMLInputElement值属性,而不是标记属性。 所以,我说,这会让代码变得有点混乱。