问题描述
||
这是一个简单的代码块:
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()与.attr()
要了解,您将需要知道val()是prop(\'value \')的快捷方式
, 我首先尝试知道
form_li.find(...)
方法返回多少个对象。那我要检查一下
form_li.find(\'input.ajax_selection\').attr(\"value\",new_value)
工作与否。很难用这么少的代码回答,对不起