2013-04-23 63 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() { });