我使用JQuery的.html()使用此代码在我的网页上的div交换:JQuery的使用HTML()后重新绑定
$('#item1').html($('#item8').html());
$('#item8').html('<p>sdsdsd</p>');
我发现这个伟大的工程,但是jQuery方法停止工作。所以div#item1将有一个切换,例如,它会正常工作,直到我使用.html()。
有没有解决方案重新绑定JQuery来解决这个问题?
谢谢!
我使用JQuery的.html()使用此代码在我的网页上的div交换:JQuery的使用HTML()后重新绑定
$('#item1').html($('#item8').html());
$('#item8').html('<p>sdsdsd</p>');
我发现这个伟大的工程,但是jQuery方法停止工作。所以div#item1将有一个切换,例如,它会正常工作,直到我使用.html()。
有没有解决方案重新绑定JQuery来解决这个问题?
谢谢!
使用.live
,也将努力
不要使用live,而应使用delegate:http://stackoverflow.com/questions/4579117/jquery-live-vs-delegate – Polaris878
使用.delegate
Docs见Jquery live() vs delegate(),为什么你应该使用delegate
超过live
。
$('itemParent').delegate('#item8', 'click', function(){});
非但没有元素的HTML,然后有浏览器的重新分析它变成另一种元素,你可以只从一个容器移动节点到另一个:
var $item8 = $('#item8');
$('#item1').empty().append($item8.contents());
$item8.html('<p>sdsdsd</p>');
这将使任何当前绑定在已经创建的元素上,因此不需要使用live()
或重新绑定这些事件。
live()
,或者说,delegate()
仍然是一个体面的替代解决方案,但是。
+1更好的解决问题的整体解决方案 – Loktar
事件处理程序到底在哪里?你为什么不使用DOM操作? '$( '#物品1')空()追加($( '#item8')儿童());'?只要你不需要,不要使用'.html()'。 –
@Felix Kling:我只是想提出一个答案,尽管你可能需要'content()'而不是'children()'。 –
http://jsfiddle.net/X63tG/这似乎工作得很好....你是说你已经绑定到你的divs中的元素,或者divs本身? divs中的元素:使用'live'。 Divs自己?应该工作正常。 –