我正在尝试使用 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');
});
但我对不同的想法持开放态度:我可以使用更优雅/高性能/更简单/更快的方法吗?
谢谢你。