jQuery val()方法的改变似乎没有改变DOM

时间:2011-03-08 12:41:47

标签: jquery forms attributes

执行$("#someId").val("newValue")不会更改DOM - 我可以使用$("#someId").val()检索此值,但DOM中的元素仍然没有值属性。

如何设置输入组件的值并更改DOM?

我正在使用jQuery 1.5.1

4 个答案:

答案 0 :(得分:6)

.val()确实更改DOM。例如:

$("#someId").val("newValue");

alert(document.getElementById('someId').value);

提醒'newValue'。

请参阅DEMO

如果要更改要在表单重置中使用的默认值,请尝试以下操作:

$("#someId").attr("defaultValue", "newValue");

请参阅DEMO

答案 1 :(得分:2)

<强>答案 如果你使用的是萤火虫,它有一个关于更新dom的错误,你必须点击 窗口对象刷新它:)

<强>解释 @alex我正在阅读下面的评论。在@rsp回答中你似乎把dom和html树混为一个dom,就像一个树状的值列表,用于跟踪值。然后单击dom选项卡,或者右键单击有问题的元素,然后在dom中检查它,值,更改不会显示在firebug上,因为安全原因会阻止除浏览器以外的任何内容更改其值or因为火虫,它错了,他们可能正在努力:)

答案 2 :(得分:1)

阅读“rsp”答案和讨论:

您想要更改HTML源代码,而不是DOM。

因此使用:

$('#YOUR_ID option[value="YOUR_VALUE"]').attr('selected', 'selected');

方法.val()不会更改HTML源代码。

干杯。 斯特凡诺

答案 3 :(得分:1)

$("#someId").val("newValue")

将更改输入元素的值。

$("#someId").attr("value","newValue")

将更改value属性的值。

如果要编写元素,第二个可能会有所帮助。所以,例如:

$("#someId").val("newValue")
$("#someId").attr("value","newValue")
write($("#someId").parent())

- 将导致呈现新值,而

$("#someId").val("newValue")
write($("#someId").parent())

- 只显示原始值。