jQuery语法错误? 'if'和'else'语句中的Css和Animate

时间:2011-06-08 19:21:45

标签: jquery

编辑 - 我改变了我的代码:

这很好用:

$(".image-div").click(function () {
        if ($(this).css('z-index') == 1) 
            $(this).css('z-index','2');
        else 
            $(this).css('z-index','1');
});

这也有效:

    $(".image-div").click(function () {
        if ($(this).css('z-index') == 1) 
            $(this).animate({
                width: '500px'
            }, 5000, function() {
                // Animation complete.
            });
        else 
            $(this).animate({
                width: '250px'
            }, 5000, function() {
                // Animation complete.
            });
    });

但这没有做任何事情:

    $(".image-div").click(function () {
        if ($(this).css('z-index') == 1) 
            $(this).css('z-index','2');
            $(this).animate({
                width: '500px'
            }, 5000, function() {
                // Animation complete.
            });
        else 
            $(this).css('z-index','1');
            $(this).animate({
                width: '250px'
            }, 5000, function() {
                // Animation complete.
            });
    });

由于

2 个答案:

答案 0 :(得分:7)

是。 if&之后没有开始{或结束}在别的地方之前。

此外,它看起来像是底部的双});

答案 1 :(得分:2)

看起来你需要围绕你的花括号...否则,其他是浮动的,如果没有连接。

[ADDED] 好的,任何带有多个语句的控件都需要花括号。以下工作正常,没有花括号,因为每个控件后只有一个语句:

if( condition ) doSomething();
else doSomethingElse();

但是,这会破坏:

if( condition ) 
  doSomething();
  doAnotherThing();
else
  doSomethingElse();

为什么呢?因为在这种情况下,IF只涵盖了这个:

if( condition ) 
  doSomething();

然后,你坐在不知名的地方:

  doAnotherThing();
else
  doSoemthingElse();

doAnotherThing不包含在if()中,因此也不是你的其他{}。所以,你的其他人失去了对if和代码中断的依恋。恕我直言,最好的做法总是使用花括号,因为如果你不这样做,你或其他人可能会进入并将doAnotherThing()行添加到代码中,认为它包含在if()中并且无意中破坏了代码

那就是说,你的if / else都包含多个语句。因此,从严格的语法点来看,您的代码必须是:

$(".image-div").click(function () {
    if ($(this).css('z-index') == 1) { 
        $(this).css('z-index','2');
        $(this).animate({
            width: '500px'
        }, 5000, function() {
            // Animation complete.
        });
    }
    else {
        var divRef = this;
        $(this).animate({
            width: '250px'
        }, 5000, function() {
            $(divRef).css('z-index','1');
        });
    }
});