我想将thisOne的innerhtml替换为clone1或clone2的内部。
我已经想出如何将整个thisOne元素替换为克隆的元素,但是当我将数据存储在li元素中时,不希望这样做。
我还想出了如何在克隆innerhtml周围放置一个单独的div标签,克隆(true)那个冗余标签元素,并将冗余标签及其innerhtml附加到thisOne中,但这些似乎浪费了标签。
我还发现html()并没有带来事件,而且每次交换html时都不会重新声明它们。
有什么建议吗?谢谢
<ul>
<li id="thisOne" data-attr="whatever"></li>
</ul>
<ul style="display: none">
<li id="clone1">
<a href="#" class="doSomething1">Click</a>
<button class="doSomething3">Click</button>
</li>
<li id="clone2">
<a href="#" class="doSomething2">Click</a>
<button class="doSomething4">Click</button>
</li>
</ul>
....
$("clone1 a").click(function(){alert("hi");});
添加的以下新代码似乎无效。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Dialogs</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());});
$("#clone a").on("click", function(){alert("click");});
$("#clone select").on("change", function(){alert("change");});
});
</script>
</head>
<body>
<input type="button" value="Clone it" id="cloneIt" />
<div id="newLocation"></div>
<div id="clone" style="display: none">
<a href="#">Click Me</a>
<select><option>Hello</option><option>Goodby</option></select>
</div>
</body>
</html>
答案 0 :(得分:0)
你可以迭代孩子,而不是将每个孩子克隆到thisOne
$("#clone1, #clone2").each(function() {
$(this).children().each(function() {
$("#thisOne").append($(this).clone(true));
});
});
答案 1 :(得分:0)
您必须委派事件,以便它等待将来出现的选择器。
这很容易
$("#clone1 a").on("click", function(){alert("hi");});