这是一个简单的代码块:

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')的快捷方式

10-04 22:25
查看更多