jQuery 1.8.1でHTML5要素のクローンを作成しようとしていますが、この例のjsbinはIE <9で失敗します(要素はクローンされません)
コード(簡略化)
<head>
<script src="http://code.jquery.com/jquery-1.8.1.min.js"></script>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<section>My section</section>
<button>Clone section</button>
...
<script>
var section = $('section');
$('button').on('click', function() {
var clone = section.clone(true);
$(clone).insertAfter($('section:last'));
});
$('section').on('click', function() {
alert('hey, I am a section');
});
</script>
</body>
もちろん、これは簡略化されたデモです。私の実際のコードには、いくつかのイベントを持つ多くのネストされた要素があります。
私の質問
これはjQueryのバグですか、それともコードに何かが欠けていましたか?
ノードに関連付けられたイベントのクローンも作成しているので、
clone()
IE <9でも同じ動作を再現するために使用できるエレガントな代替手段はどれですか?
これまでのところ、私が見つけた唯一の回避策は、を介してすべてのノードをコピーし、を介しhtml()
てそれらを追加し、それらのノードに関連付けられたイベントのイベント委任append()
を利用してコードをリファクタリングすることです。
$('body').on('click', 'section', function() {
alert('hey, I am a section');
});
しかし、私はさまざまなアイデアを受け入れています。よりエレガント/パフォーマンス/より簡単/より高速なアプローチを使用できますか?
ありがとうございました。