Jquery布尔开关无法正常工作?

时间:2013-07-30 07:07:38

标签: jquery switch-statement boolean mouse mousewheel

我想要做的是创建一个开关,当我向上/向下鼠标滚轮时,运行动画(但是会确保动画在第二个和第三个之前完成...

我所做的是将我的动画变量设置为true并第一次运行它并立即将其切换为false。

不知何故,条件陈述似乎没有起作用......

我的示例代码: http://codepen.io/vincentccw/pen/veyAc

/////////////////////////////////////////////// /////

$("#cropInside").mousewheel(function(event, delta, deltaX, deltaY) {

var boxSlide = document.getElementById("whatEver");
var animationStatus = true;

if ([delta > 0] && [animationStatus==true]){
    //code here
    animationStatus=false;
    console.log(animationStatus);
   //call back function after animation complete and set animationStatus=true;
}

if([delta < 0] && [animationStatus==true]){
    //code here
    animationStatus=false;
    console.log(animationStatus);
    //call back function after animation complete and set animationStatus=true;
}

});

////////////////////////////////////////////

1 个答案:

答案 0 :(得分:0)

在我看来,问题在于你将条件包装在一个数组中,有效地发表如下语句:

if ([true] && [true]) {
if ([false] && [true]) {
if ([true] && [false]) {
if ([false] && [false]) {

这是通过将数组转换为布尔值来计算的。如果您执行此操作:console.log([delta > 0])日志将显示包含值truefalse的数组。将数组作为布尔值计算时,数组的内容无关紧要 - console.log(Boolean([]));将记录true因为数组为真(尽管为空)。这不是一个好的检查,我怀疑这是你的意图。似乎从您的条件中删除数组包装器时,它们正常工作:

if (delta > 0 && animationStatus==true) {

另请注意,您应该避免==支持===,因为与==的松散比较也会导致一些意外行为。