jQuery + If语句
问题描述:
我想教自己一些基本的jQuery,并且遇到了我想要使用的if语句的问题。我的代码如下:jQuery + If语句
var animate = 0;
$('a').click(function() {
if (animate == 0) {
$('#shadow').fadeOut(500);
var animate = 1;
}
});
我希望能进一步使用一些else语句的路线,使取决于值“动画”点击时会执行不同的jQuery的动作。我确信我忽略了一些明显的东西,但是我正在试图弄清楚它是什么。
任何帮助将不胜感激!
答
将012分配给animate
时,不应再次使用var
关键字。通过这样做,您导致语法错误,因为animate
已经在同一范围内声明。
答
您正在通过在点击函数中使用var来重新定义动画。
变化
var animate = 1;
到
animate = 1;
这将使所以您设置的动画变量的值外范围,而不是动画您点击功能中创建范围。
HTH
答
当您使用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');
});
}
});
不过,我不知道你实施的细节,所以我让你找出适合你的特殊需求的东西。
就这样,问题就解决了 - 经验教训,非常感谢。 – 2011-05-17 22:16:42
(+1)这是真的 – 2011-05-17 22:16:49
没有语法错误,但范围发生了变化。 – scrappedcola 2011-05-17 22:18:30