所以我在div
内加了一个字段(input[type=text]
),然后我创建了这个div内容的副本并将副本显示给用户进行编辑它的价值。当他们更新副本的值时,它会提交更改原始值的副本。
问题是,当我删除副本并再次从隐藏的div创建新副本时,新副本字段中出现的文本是原始文本(加载页面时)而不是新文本更新为。原始字段显示其中的新文本,但当我检查元素时,value属性显示旧文本。
换句话说,除了原件中显示的文本和值属性外,一切都是正确的。
所以我想知道我是做错了什么,或者是否有某种解决方法。
这是一个代码示例:
<div style="display:none">
<input type="text" value="test" />
<a>Submit</a>
</div>
<button class="get">Get value</button>
<button class="show">Show hidden one</button>
<button class="copy">Copy hidden one</button>
$('button.copy').click(function(){
$('<br><span>'+$('div').html()+'</span>').appendTo('body');
});
$('a').live('click',function(){
$('div input').val($('span input').val());
$('span').remove();
});
$('button.get').click(function(){
alert($('div input').val());
});
$('button.show').click(function(){
$('div').show();
});
答案 0 :(得分:2)
.val()
不会更新value属性,因此当您执行.html()
或检查元素时,您会看到原始html而不是值。如果您将上面代码的一行更改为:
$('div input').attr("value", $('span input').val());
它应该像您期望的那样工作。我在尝试使用.data()
设置数据属性时使用.data
看到类似的问题,然后使用.attr("data-