为什么jQuery val()函数不更新属性’value’?

在我完成网站之后我遇到了这个问题,因为我必须在基于ajax的页面中实现历史记录(这需要用html更新某些地方(包括带有简单文本输入的表单 – 这就是问题所在 – 他们没有得到它们的值被赋值,因为它们的值由val()而不是由attr()设置 – 谎言))。 我注定要替换所有的javascript

$('#xxx').val('someValue'); 

 $('#xxx').attr('value', 'someValue'); 

还是有希望绕过这个?

这是一个非常简单的例子。 正如您在对话框中看到的,属性未在html代码中设置。

它使用底层的native element.value = 'someValue'当然设置了元素的value 属性

 element.property_to_set = 'new_value'; 

所以它不会改变属性

 element.setAttribute('value', 'someValue') 

这是attr()在内部执行的操作,而prop()更改属性,就像val()
它改变属性的原因是,属性是表单提交中使用的属性,它通常用于在javascript中获取值,因此坚持属性而不是属性是有意义的,因为该属性通常仅用于设置属性的初始值,稍后使用javascript更改属性不会更新属性,这将是您所拥有的属性的相反问题,并且它将影响所有表单提交并成为一个重大问题。