这是一个简单的代码块:
1 var selected_clone = selected.clone();
2 alert(selected_clone.text());
3 var new_value = selected_clone.text();
4 form_li.find('input.ajax_selection').val(new_value);
现在。
第2行(调试)准确地输出了我期望的值。
我知道,第3行是多余的,但是我将其用于测试:将任意字符串传递给
new_value
时,第4行中的val
可以正常工作。如果将其赋给selected_clone.text()结果,它不会更改该值
问题是:为什么它的行为如此令人困惑?
从chrome的调试控制台中,您可以放松一下。
附加信息:
typeof(new_value)
是字符串;表单字段中的值实际上已更新:但是value属性没有更新。
关于后一点:不,这不是我的调试器。提交时发送的值未更新。
请求发送未更新的值;而表单显示更新后的表单。
神圣的Shitzu,这很奇怪。
我通过将第4行更改为
form_li.find('input.ajax_selection').attr('value',new_value);
解决了该问题。但是,这对我来说丝毫没有意义,我仍然想知道为什么。
最佳答案
您可以在以下问题中找到新问题的答案:.prop() vs .attr()
要了解您将需要知道val()是prop('value')的快捷方式