JQuery если заявление нарушает мой код - PullRequest
1 голос
/ 18 марта 2012

Это мой код:

$("#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 ]

7 голосов
/ 18 марта 2012

Вы не можете поместить туда оператор 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% для left в моем примере возвращает auto в Chrome!См. Этот вопрос / ответ для обсуждения этой проблемы: jQuery .css ("left") возвращает "auto" вместо фактического значения в Chrome

5 голосов
/ 18 марта 2012

Нельзя просто вставить оператор if в середину оператора.

Лучшим решением будет создание объекта параметров перед вызовом touchwipe():

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

    };

    options.wipeRight = function() {

    };
}

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

Обратите внимание, что условие if оценивается только один раз.Если вы хотите, чтобы его оценивали по каждому событию, ответ @ ManseUK - это путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...