我有一種情況,一個div的html內容更改爲其他內容,然後又改回來了。 jquery ui的一些控制行爲不當。我將問題簡化爲以下代碼片段,它基本上表明與該按鈕關聯的事件處理程序不再觸發。我假設這些垃圾是在他們走後的某個時候收集的。所以我的問題是 -html重置後javascript事件丟失
如何防止事件處理程序從DOM丟失垃圾收集?
據我所知,我可以重新分配click()
函數,但由於我使用外部庫(jQuery UI),我真的不知道它是如何處理我的控件。我只想讓他們的活動像以前一樣恢復。
<div id="container">
<p>This container has a button, which will forget its click()...</p>
<input id="testbutton" type="button" value="Click Me!"/>
</div>
<script type="text/javascript">
$(function(){
$("#testbutton").click(
function(){
alert("Button has been clicked!");
})
});
</script>
<div>
<p>... when this button reseats html</p>
<input id="actionbutton" type="button" value="Toggle"/>
</div>
<script type="text/javascript">
var toggle = false;
var html;
$(function(){
$("#actionbutton").click(
function(){
toggle = !toggle;
if(toggle){
html = $("#container").html();
$("#container").html("");
} else $("#container").html(html);
})
});
</script>
這個jfiddle顯示我有問題。
另一種方法是不覆蓋容器中的html,而是使用detach方法將其刪除,然後將其添加回dom - http://jsfiddle.net/8S5E4/4/。似乎這不是你想要的(基於小提琴中的評論) –