textarea
とselect
s の値はノードの内容によって決定されるため、違いが生じるのではないかと思います。コントロールの値を変更すると、DOM プロパティは変更されますが、ノードのコンテンツは変更されないため、それらを複製すると、複製には元の要素の値が含まれます。
change イベントでノードのコンテンツを更新することで、これを回避できます。
// textarea
$("textarea").change(function() { $(this).text($(this).val()); });
// select
$("select").change(function() {
var sel = $(this).children(":selected");
$(this.children).not(sel).removeAttr("selected");
sel.attr("selected", "selected");
});
http://jsfiddle.net/emr2w/8/
編集:
これに関する Mozilla のバグ ケースは多数ありますが (解決されたものもあれば、解決されていないものもあります)、実際の仕様についての言及はほとんどありません。value
a の後のプロパティの動作はcloneNode()
、仕様で明確に定義されていない灰色の領域のようです。結局のところ、 の目的はDOM ノードcloneNode()
のクローンを作成することであり、必ずしもオブジェクトの状態を複製することではありません。
https://bugzilla.mozilla.org/show_bug.cgi?id=197294
https://bugzilla.mozilla.org/show_bug.cgi?id=230307
https://bugzilla.mozilla.org/show_bug.cgi?id= 237783