2011-09-02 60 views
2

我使用JQuery的.html()使用此代码在我的网页上的div交换:JQuery的使用HTML()后重新绑定

$('#item1').html($('#item8').html()); 
    $('#item8').html('<p>sdsdsd</p>'); 

我发现这个伟大的工程,但是jQuery方法停止工作。所以div#item1将有一个切换,例如,它会正常工作,直到我使用.html()。

有没有解决方案重新绑定JQuery来解决这个问题?

谢谢!

+0

事件处理程序到底在哪里?你为什么不使用DOM操作? '$( '#物品1')空()追加($( '#item8')儿童());'?只要你不需要,不要使用'.html()'。 –

+0

@Felix Kling:我只是想提出一个答案,尽管你可能需要'content()'而不是'children()'。 –

+0

http://jsfiddle.net/X63tG/这似乎工作得很好....你是说你已经绑定到你的divs中的元素,或者divs本身? divs中的元素:使用'live'。 Divs自己?应该工作正常。 –

回答

4

使用.live,也将努力

+1

不要使用live,而应使用delegate:http://stackoverflow.com/questions/4579117/jquery-live-vs-delegate – Polaris878

4

非但没有元素的HTML,然后有浏览器的重新分析它变成另一种元素,你可以只从一个容器移动节点到另一个:

var $item8 = $('#item8'); 
$('#item1').empty().append($item8.contents()); 
$item8.html('<p>sdsdsd</p>'); 

这将使任何当前绑定在已经创建的元素上,因此不需要使用live()或重新绑定这些事件。

live(),或者说,delegate()仍然是一个体面的替代解决方案,但是。

+1

+1更好的解决问题的整体解决方案 – Loktar

相关问题