Jquery mouseover animate with get function

时间:2013-08-02 04:26:19

标签: php jquery jquery-animate

我正在制作单独的帖子,我希望自动加载帖子而不刷新页面,所以我使用的是jquery $.get。接下来,如果有人将鼠标移到该帖子上,则div将从左侧动画。但由于帖子每30秒刷新一次,因此鼠标动画不起作用。 div只是眨眼&隐藏,不留。什么是更好的方式?

这是我的代码-Jquery

// JavaScript Document
$(document).ready(function(){
    $(".sharePosts").hide();
    $(".LrgPosts").mouseenter(function() {
        $(this).find(".sharePosts").show().animate({width: '51px'}, "fast");
    }).mouseleave(function(){
        $(this).find(".sharePosts").hide().animate({width: '0px'}, "slow");
    });

    $(function() {
        refreshEPosts();
    });

    function refreshEPosts(){
        setTimeout(refreshEPosts,30000);
        $.get('getNewPosts.php', function(data) {
            $('#leftAlign').html(data).fadeIn();    
        });
     }
});

2 个答案:

答案 0 :(得分:0)

由于您要替换整个HTML,因此div的显示和隐藏动画只是闪烁而不是停留。我认为您应该继续将新帖子添加到HTML dom中,而不是完全替换HTML。

 // this is just and example, you cant modify with your own code.  

 function refreshEPosts(){
    setTimeout(refreshEPosts,30000);
    $.get('getNewPosts.php', function(data) {

        if(gotNewPost(data)){
            var newPostHtml = "<div>" + data + "</div>";
            $('#leftAlign').append(newPostHtml ).fadeIn();
        } 

    });
 }

答案 1 :(得分:0)

您要做的一件事是使用.on()功能附加事件。

$('body').on('mouseenter','.Lrgposts',function(){ // stuff});

对mouseleave使用相同的内容。 .mouseenter().mouseleave()的一个问题是它不适用于动态HTML。