Jquery-effect+autohide
我正在使用jquery为我的网站制作一些动画,但我对一些行为有点问题: 我有一个div,它突然从页面顶部出现并抖动: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
$(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-谢谢:很高兴它能为您带来最小的变化