Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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
Jquery-effect+autohide_Jquery_Jquery Ui - Fatal编程技术网

Jquery-effect+autohide

Jquery-effect+autohide,jquery,jquery-ui,Jquery,Jquery Ui,我正在使用jquery为我的网站制作一些动画,但我对一些行为有点问题: 我有一个div,它突然从页面顶部出现并抖动: $(minipopup).animate({ marginTop: '+=' + (240) + 'px' }, 1000); $(minipopup).effect("shake"); 此小弹出窗口有一个X用于关闭它,否则,它将在几秒钟后自动关闭: setTimeout(function() { $('#minipopup').effect("exp

我正在使用jquery为我的网站制作一些动画,但我对一些行为有点问题:

我有一个div,它突然从页面顶部出现并抖动:

$(minipopup).animate({
    marginTop: '+=' + (240) + 'px'
}, 1000);

$(minipopup).effect("shake");
此小弹出窗口有一个X用于关闭它,否则,它将在几秒钟后自动关闭:

setTimeout(function() {
        $('#minipopup').effect("explode");          
                    }, 10000); 

$('#closePopup').click(function() {
        $('#minipopup').effect("explode");
                    });
一切都正常,除了,如果用户单击关闭按钮,他会看到爆炸效果,弹出窗口会消失,但在经过我在设置超时下定义的10秒后,用户会再次看到弹出窗口爆炸效果,因为弹出窗口在视觉上不存在。如果用户已经手动关闭弹出窗口,我如何避免幽灵爆炸


提前感谢。

您可以稍微更改您的单击处理程序,如下所示:

$('#closePopup').click(function() {
   $('#minipopup').effect("explode", function() {
     $(this).remove();
   });
});
setTimeout(function() {
    $('#minipopup:visible').effect("explode");          
}, 10000); 
如果您不再需要该元素,则此操作有效

或者,如果您再次需要该元素,请告诉您的setTimeout函数仅在该元素仍然可见时使用,如下所示:

$('#closePopup').click(function() {
   $('#minipopup').effect("explode", function() {
     $(this).remove();
   });
});
setTimeout(function() {
    $('#minipopup:visible').effect("explode");          
}, 10000); 
在这两种情况下,选择器将停止匹配您不想再制作动画的元素。

将setTimeout设置为变量,如下所示:

var timer = setTimeout(function() {
    $('#minipopup').effect("explode");          
                }, 10000);
然后,在单击事件中,使用clearTimeout取消超时:

$('#closePopup').click(function() {
        $('#minipopup').effect("explode");
        clearTimeout(timer);
                    });

当用户关闭弹出窗口时,您需要清除计时器

var timer =setTimeout(function() {
        $('#minipopup').effect("explode");          
                    }, 10000); 

$('#closePopup').click(function() {
        clearTimeout(timer);
        $('#minipopup').effect("explode");
                    });

你的第二个选择对我非常有效。非常感谢。@lidermin-谢谢:很高兴它能为您带来最小的变化