我有这个代码:
setInterval (function(){
var r_width=$(document).width();
if(r_width>650){
alert(r_width);
$("#game, #gms").hover(function() {
$("#gms").stop(true, true).fadeIn(500);
}, function() {
$("#gms").stop(true, true).delay(10).fadeOut(400);
});
}
}, 1000);
条件成立:
当文档宽度大于650时,将显示警报并执行代码.hover。
条件为假:
但是,当文档宽度小于650时,不会显示警报,但会执行代码。
为什么当条件为假时代码被执行?
答案 0 :(得分:2)
代码没有被执行,但你已经在一个区间内放置了一个事件处理程序,并且当函数再次触发时,事件处理程序不会被删除,它会停留,你只需每秒添加更多的事件处理程序。
添加事件处理程序一次,并在事件处理程序
中执行检查$("#game, #gms").hover(function() {
if ( $(document).width() > 650 )
$("#gms").stop(true, true).fadeIn(500);
}, function() {
if ( $(document).width() > 650 )
$("#gms").stop(true, true).delay(10).fadeOut(400);
});
答案 1 :(得分:0)
如果条件r_width>650
至少评估一次为真(当代码在setInterval
中每隔一秒执行一次时)hover
监听器附加到元素选择器#game
和#gms
。
然后每次触发悬停事件时,尽管值r_width