2011-05-17 210 views
3

我想教自己一些基本的jQuery,并且遇到了我想要使用的if语句的问题。我的代码如下:jQuery + If语句

var animate = 0; 

$('a').click(function() { 
if (animate == 0) { 
$('#shadow').fadeOut(500); 
var animate = 1; 
} 
}); 

我希望能进一步使用一些else语句的路线,使取决于值“动画”点击时会执行不同的jQuery的动作。我确信我忽略了一些明显的东西,但是我正在试图弄清楚它是什么。

任何帮助将不胜感激!

回答

5

将012分配给animate时,不应再次使用var关键字。通过这样做,您导致语法错误,因为animate已经在同一范围内声明。

+0

就这样,问题就解决了 - 经验教训,非常感谢。 – 2011-05-17 22:16:42

+0

(+1)这是真的 – 2011-05-17 22:16:49

+2

没有语法错误,但范围发生了变化。 – scrappedcola 2011-05-17 22:18:30

2

您正在通过在点击函数中使用var来重新定义动画。

变化

var animate = 1; 

animate = 1; 

这将使所以您设置的动画变量的值外范围,而不是动画您点击功能中创建范围。

HTH

6

当您使用var声明一个变量,然后就变成了局部变量,这意味着它在该范围内的新功能。

让你得到你想要的目标快速(和肮脏)的方法是这样的:

var animate = 0; 
$('a').click(function() { 
    if (animate === 0) { 
     $('#shadow').fadeOut(500); 
     animate = 1; // note the lack of "var" 
    } 
}); 

请注意,这可能是一个非常完美的解决方案;特别是animate不会将自己设置回0(尽管如此,您可以使用回调函数作为fadeOut的第二个参数)。

的静止更好的解决方案可能是将(和删除)一类你正在使用的特定项目:

$('a').click(function() { 
    if (!$('#shadow').hasClass('animating')) { 
     $('#shadow').addClass('animating').fadeOut(500, function() { 
      $(this).removeClass('animating'); 
     }); 
    } 
}); 

不过,我不知道你实施的细节,所以我让你找出适合你的特殊需求的东西。