jQuery if语句破坏了我的代码

时间:2012-03-18 10:10:08

标签: javascript jquery if-statement

这是我的代码:

$("#header").touchwipe({
//  if($('#cont-wide').css('left') == '-100%' ){
         wipeLeft: function() { 

                $('#cont-wide').animate({
                        left: '-201%'
                }, 500 );
                $('#nav-filters').fadeOut(200);
                $('#nav-map-l').delay(300).fadeIn(200);

                $('#one .col-inner').delay(500).hide(0);

                $('#three .col-inner').css('display','block');

                setTimeout(function() { 
                window.scrollTo(0, 1) }, 
                100);
            },
         wipeRight: function() { 

                $('#cont-wide').animate({
                        left: '1%'
                }, 500 );
                $('#nav-filters').fadeOut(200);
                $('#nav-map-r').delay(300).fadeIn(200);

                $('#one .col-inner').css('display','block');

                setTimeout(function() { 
                window.scrollTo(0, 1) }, 
                100);

            },
         min_move_x: 50,
         min_move_y: 50,
         preventDefaultEvents: false
//  }   
});

目前它的工作正常。但是,当我删除注释以添加条件语句时,代码和我所有其他JavaScript都停止工作。谢谢

2 个答案:

答案 0 :(得分:7)

你不能把if声明放在那里......

你可以这样做:

 wipeLeft: function() { 
      if($('#cont-wide').css('left') == '-100%' ){
         // the rest
      }
 },
 wipeRight: function() { 
      if($('#cont-wide').css('left') == '-100%' ){
         // the rest
      }
 }

注意 - css函数我没有产生您期望的结果:http://jsfiddle.net/VccAn/在我的示例中使用10%的{​​{1}}值返回left在Chrome上!有关此问题的讨论,请参阅此问题/答案:jQuery .css("left") returns "auto" instead of actual value in Chrome

答案 1 :(得分:5)

你不能只是在陈述中插入if陈述。

最好的解决方案是在调用touchwipe()之前创建选项对象:

var options = {};
if($('#cont-wide').css('left') == '-100%') {
    options.wipeLeft = function() {

    };

    options.wipeRight = function() {

    };
}

$("#header").touchwipe(options);

请注意,if条件仅评估一次。如果您希望在每个事件上对其进行评估,那么@ManseUK's answer就是您的选择。