我希望克隆innerhtml
一个元素 ( #clone
) 并将其插入另一个元素 ( #newLocation
)。
使用的问题clone()
是我将首先删除当前在 中的元素(如果有的话)#newLocation
,然后遍历每个元素#clone
并将其附加到#newLocation
. 这不是世界末日,但我希望有一种更简单的方法。
相反,我想我会使用html()
. 由于这不会保留事件,我将不得不委托使用ON
. 我原以为这会起作用,但是,它没有。
有什么建议我做错了吗?clone()
另外,即使我可以使解决方案正常工作,是否认为使用该解决方案会更有效html()
?
编辑:刚刚写了我的第一个插件:http: //jsfiddle.net/Wnr65/这似乎工作。好主意吗?当然可以写得更好。
$(document).ready(function(){
$("#cloneIt").click(function(){$('#newLocation').cloneInnerHtml('clone').css('color', 'red');});
$("#clone a").click(function(){alert("click");});
$("#clone select").change(function(){alert("change");});
});
(function( $ ){
$.fn.cloneInnerHtml = function( id ) {
this.empty();
var $t=this;
$('#'+id).each(function() {$t.append($(this).clone(true));});
return this;
};
})( jQuery );
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Clone INNERHTML</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js" language="javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#cloneIt").click(function(){$('#newLocation').html($('#clone').html());});
//Only works on original clone
$("#clone a").on("click", function(){alert("click");});
$("#clone select").on("change", function(){alert("change");});
//Doesn't work at all
$("#newLocation a").on("click", function(){alert("click");});
$("#newLocation select").on("change", function(){alert("change");});
});
</script>
</head>
<body>
<input type="button" value="Clone it" id="cloneIt" />
<p>Original clone is shown below</p>
<div id="clone">
<a href="#">Click Me</a>
<select><option>Hello</option><option>Goodby</option></select>
</div>
<hr />
<p>Insert new clones below.</p>
<div id="newLocation">
<p class="someOldElement">someOldElement</p>
</div>
</body>
</html>