2011-09-02 54 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

相關問題