2012-04-12 70 views
0

我想用clone1或clone2替換thisOne的innerhtml。用事件替換innerhtml

我已經想出瞭如何用克隆的元素替換整個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

你可以遍歷的孩子,不是附加克隆每一個thisOne

$("#clone1, #clone2").each(function() { 
     $(this).children().each(function() { 
       $("#thisOne").append($(this).clone(true)); 
     }); 
    }); 
+0

你會覺得會有更好的方式來做到這一點,但我得去上最好的。謝謝 – user1032531 2012-04-13 22:03:31

0

你必須讓等待選擇的將來出現,以及委派事件。

它很容易這樣

$("#clone1 a").on("click", function(){alert("hi");}); 
+0

我如何選擇innerhtml,而不僅僅是li標籤?只需使用html(),還是需要clone()它?本來沒有顯示它,但有更多,只是在li標籤中的一個。謝謝! – user1032531 2012-04-12 16:21:20

+0

@ user1032531,yeah'.html()'會給出所有內部標記 – Starx 2012-04-12 16:28:51

+0

感謝Starx,我嘗試使用.html(),它不會觸發事件。查看我剛添加到原始帖子中的新代碼。謝謝 – user1032531 2012-04-12 17:17:07