2013-04-23 64 views
0

我有一個來自PHP的動態內容的頁面,我想使用jQuery的加載函數定期刷新包含動態內容的div容器,以便新內容顯示在舊內容之上。jQuery加載事件

我使用jQuery的功能如下:

setInterval(function() {       
    $("#ContentWrapper").load("Livefeed.php #ContentWrapper"); 
}, 10000); 

刷新內容容器的包裝每10秒

我的問題是執行的負載功能之後。點擊事件和懸停事件在頁面上無法正常工作。最初他們根本沒有開火,所以我對內容包裝器中的所有點擊和懸停事件使用了Jquery live函數,並解決了問題。

但是,當頁面重新加載懸停重新加載以及所有隱藏的div與通過jQuery的.show方法隱藏可見。有沒有什麼辦法來防止懸停重新加載,並且每次調用.load函數時可見的隱藏div都保持可見。

我使用的是像這樣的點擊和懸停功能:

$('selector').live("click",function(){ 
}); 

$('selector').live("hover",function(){ 
}); 

任何幫助表示讚賞。

+0

如果不使用一些有關視圖的狀態信息和更新視圖的完整信息 – 2013-04-23 00:52:15

+0

請解釋@ArunPJohny – 2013-04-23 00:53:17

回答

2

現在不推薦使用jQuery.live。所以不要使用它。從現在開始使用jQuery.on。此外,.hover事件正在被取消。你應該使用單獨的mouseenter和mouseleave事件。

您可以通過更換.live解決這個問題:

/* 
If click happens inside contentwrapper, check if click target was yourSelector, if true execute this function 
*/ 
    $("#ContentWrapper").on("click", "#yourSelector", function(){ 
    //do whatever u wanna do on click 
    }); 

要保留被隱藏,所有這些並非您需要設置唯一的ID爲每格的所有div的軌道。在使用.load()重新加載之前,您可以遍歷所有div,並以[{id:state},..]格式將其當前狀態(隱藏或可見)保存在Object Array中。一旦AJAX請求完成後,通過對象陣列環經由$.map和每個格

0

可以使用JQuery代表,其主要意圖是動態驅動的內容設置狀態:

http://api.jquery.com/delegate/

$("#Parent").delegate("selector","click", function() { });