我需要实现一个触发消息框的文本链接。
处所:
我的方法:
实施
$.extend($.fn, {
// Method to open the box
openMessage: function() {
var elem = $(this);
if (!elem.is(":visible")) {
elem.fadeTo(0, 0.9).animate({
top: 0
}).delay(10000).fadeOut(1000, function() {
elem.css("top", "-150px");
});
}
},
// Method to close the box when clicking inside it
closeOnClick: function() {
var elem = $(this);
elem.click(function() {
elem.clearQueue().fadeOut("fast", function() {
elem.css("top", "-150px");
});
});
}
});
// Text link opens the box
$("#open_message").click(function(e) {
e.preventDefault();
$("#message").openMessage();
});
// Clicking in the message will close it
$("#message").closeOnClick();
我的问题:
一切顺利,盒子展开,等待5秒然后淡出。当我在框内点击时出现问题。它消失了,好吧,但从这一刻起,停顿时间低于5秒。如果我没有在框内单击,它总是等待5个sedons,从我在框内单击的那一刻起,暂停时间会缩短。
我的问题: 我做错了什么?我想这是一个队列问题,但我找不到错误的位置。
谢谢!
答案 0 :(得分:1)
听起来问题就是你在做延迟的地方。我会使用setTimeout / clearTimeout:
var t;
$('#link').click(function(){
showBox();
t = setTimeout(hideBox, 5000);
});
$('#box').click(function(){
clearTimeout(t);
t = setTimeout(hideBox, 5000);
});