Если вы используете jquery 1.4, вы можете использовать detach :
Метод .detach () такой же, как и .remove (), за исключением того, что .detach () сохраняет все данные jQuery, связанные с удаленными элементами. Этот метод полезен, когда удаленные элементы должны быть повторно вставлены в DOM позднее.
<body>
<div id='container1'>...elements with bound events...</div>
<div id='container2'></div>
</body>
<script>
var divs = $("#container1").children().detach(); // removes the node from the DOM
$("#container2").empty().append(divs);
</script>
или используйте clone (true), если хотите, чтобы оба div-элемента отображались одновременно:
var divs = $("#container1").clone(true);
$("#container2").empty().append(divs);
О том, что $ .fn.live () слишком медленный:
Вы можете попробовать изменить «live», чтобы он был немного более эффективным, чтобы он работал следующим образом:
// $.live(selector, context, event, fn);
$.live("a.explode", "div.container", "click", function(){
alert("boom"); return false;
});
Что нужно сделать, это связать тип события с элементом контекста БЕЗ поиска элементов селектора в первую очередь. Не знаю, будет ли это полезно в вашем случае, но я подумал, что стоит упомянуть.
Чтобы еще больше ускорить процесс, вместо клика используйте mousedown:
$("a").mousedown(function(){
// do stuff...
}).click(function(){return false;});