2014-03-04 58 views
0

所以我使用jquery .load自動刷新頁面內的DIV。JQuery .load與Setinveral,在刷新它重置某些功能,並禁用它們

var refreshId = setInterval(function() {loadAdminTab()}, 30000); 

}); 

function loadAdminTab(){ 
    $("#maintab").load("admintab2.php", function() { 
     $('#loadingsq').fadeOut(0); 
    }); 
} 

我還運行$(document).ready加載中的「loadAdminTab」。在初始加載時,加載的DIV中的所有函數都可以正常工作。但是,在第一個時間間隔運行後。加載的DIV中的某些功能停止工作。

像這樣的:

< input type="button" id="showdivitem1" value="Button" ><br> 
< div id="item1" style="display:none;" >Div Display</div> 

<script> 
    $('#showdivitem1').mousedown(function(){ 
    $('#item1').show(); 
    }); 
</script> 

就像我說的,頁面最初加載後,一切都很好,但一旦後續.loads運行時,$('#item1').show();不會爲我的生活工作。

某些內容正在被加載的文檔和div中重置。


這是我確切的代碼,它仍然不是#maintab內射擊。這個代碼再次在維護中,而不是在父項之外,是問題嗎?

$('#maintab').on('mousedown','#transferCall<?php echo $callid; ?>', function(){ 
    $('#transfer<?php echo $callid; ?>').css('display','block'); 
}); 

回答

3

既然你重寫內容納入#maintab,你DOMready一次定義的所有事件處理程序 - 對裏面的節點 - 如果新的請求更改其內容(即使新的元素注入不能工作在該容器內部是相同的:定義的處理程序被附加到不再存在的節點上)。

所以你需要使用event delegation和捕獲的#maintab的事件(或父元素)


例如你的榜樣成爲

$('#maintab').on('mousedown', '#showdivitem1', function(){ 
    $('#item1').show(); 
}); 

你的處理程序設置爲#maintab(即節點不是在每一個Ajax請求刪除),此捕捉mousedown事件的傳播中#showdivitem1元素

+0

您的意見多一點我的頭。任何進一步的細節都會有幫 – tjberte

+0

給出的具體例子。我也給你一個鏈接去進一步 – fcalderan

+0

啊,這有助於Fabrizio,但這是說,當你點擊「維護」內的任何地方時,它會顯示item1。我只需點擊一下按鈕就可以顯示div。 – tjberte

相關問題