0

所以我在里面div有一个字段(input[type=text]),我正在创建这个 div 内容的副本并将副本显示给用户以编辑它的值。当他们更新副本的值时,它会被提交,这会更改原始值。

问题是,当我删除副本并再次从隐藏的 div 制作新副本时,出现在新副本字段中的文本是原始文本(加载页面时),而不是更新到的新文本。原始字段在其中显示新文本,但是当我检查其上的元素时, value 属性显示旧文本。

换句话说,除了副本中显示的文本和原件的 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();
});

​我的 jsFiddle

4

1 回答 1

2

.val()不会更新 value 属性,因此当您执行.html()或检查元素时,您看到的是原始 html 而不是值。如果您将上面的一行代码更改为:

$('div input').attr("value", $('span input').val());

它应该像您期望的那样工作。我.data()在尝试设置数据属性时看到了类似的问题,.data然后使用.attr("data-

于 2012-07-27T21:09:55.270 回答