我的问题很简单,但它让我大吃一惊。我正在使用jquery函数在变量为false时使元素闪烁,并在true时隐藏:
function flasher(bl){
if(!bl){
setInterval(function(){
$(".flash").fadeToggle("slow");
}, 300);
}
}
var bl = false;
$(document).ready(function(){
$(".flash").on("hover", function(){
bl = true;
});
flasher(bl);
});
当我使用警报时,它确实显示正在运行的功能,但我确实如此,但我无法看到我的错误。使用firebug,bl的值保持为false。我尝试过全局bl和var bl,但都保持不变。谢谢你的帮助。
答案 0 :(得分:2)
试试这个:
function flasher(){
setInterval(function(){
if(!bl){
$(".flash").fadeToggle("slow");
}
}, 300);
}
var bl = false;
$(document).ready(function(){
$(".flash").hover(function(){
bl = true;
}, function() {
bl = false;
});
flasher();
});
答案 1 :(得分:1)
你的问题是你的就绪功能只在开始时运行一次,因此你的功能闪光灯只运行一次。
每次更改变量的状态时都需要运行它。
$(document).ready(function(){
var interval;
$(".flash").on("hover", function(){ // hoverin
interval = setInterval(function(){
$(".flash").fadeToggle("slow");
}, 300);
}, function(){ // hoverout
clearInterval(interval);
$(".flash").fadeOut("slow");
});
});
此外,在你的间隔中你使用300毫秒间隔,你的fadeToggle很慢(600毫秒)。这意味着当你已经开始下一个时,你的淡入淡出动画还没有结束。即使你清除了间隔,你的动画也会被扰乱并继续闪烁几秒钟。
此外,正如您已经被告知的那样,如果您打算继续使用StackOverflow寻求帮助,您应该遵循它的规则,并接受有效的答案。