Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Jquery mouseover使用get函数设置动画_Php_Jquery_Jquery Animate - Fatal编程技术网

Php Jquery mouseover使用get函数设置动画

Php Jquery mouseover使用get函数设置动画,php,jquery,jquery-animate,Php,Jquery,Jquery Animate,我正在制作单独的帖子,我希望帖子在不刷新页面的情况下自动加载,所以我使用jquery$.get。下一步,如果有人将鼠标移动到该帖子上,div将从左侧开始设置动画。但是由于帖子每30秒刷新一次,鼠标动画就不起作用&div只会闪烁和隐藏,不会停留。更好的办法是什么 这是我的代码-Jquery // JavaScript Document $(document).ready(function(){ $(".sharePosts").hide(); $(".LrgPosts").mous

我正在制作单独的帖子,我希望帖子在不刷新页面的情况下自动加载,所以我使用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();    
        });
     }
});

由于您正在替换整个HTML,因此div的显示和隐藏动画只是闪烁而不是停留。我认为您应该继续向HTMLDOM添加新帖子,而不是完全替换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();
        } 

    });
 }
//这只是一个简单的示例,您不能用自己的代码进行修改。
函数refreshEPosts(){
设置超时(刷新次数,30000);
$.get('getNewPosts.php',函数(数据){
if(gotNewPost(数据)){
var newPostHtml=“”+数据+”;
$('#leftAlign').append(newPostHtml.fadeIn();
} 
});
}

您要做的一件事是使用
.on()
函数附加事件

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

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

它会无限地获取所有帖子如果您的HTML dom中已经有您的帖子,只需不断检查更新,如果您找到一篇新帖子,请为该帖子创建HTML,并将该帖子附加或前置到您的posts div。