2013-07-13 5 views
0

, так что im kinda new для javascript и jquery все еще так, что я застрял в этой маленькой проблеме. проблема здесь в переменной «currentId». эта переменная получает значение во время события прокрутки, но мне нужно, чтобы он оставался даже после того, как событие прокрутки прошло и было учтено во время следующего события прокрутки, когда оно только что вернулось к null или undefined.Стойкие переменные в jQuery

Может ли кто-нибудь указать мне в правильном направлении здесь? причина, которую я читал в течение дня, теперь хахаха.

$("#content").on("scroll resize", function(){ //on scroll 

    var pos=$("#frontpage").offset(); //take front page position in variable 

    $('.page').each(function(){ //for each div with a class of page 

     if(pos.top >= $(this).offset().top && pos.top < $(this).next().offset().top){ //if this divs position is in the correct range 

      if (currentId != $(this).attr('id')|| typeof currentId == 'undefined') { //if currentId Var is diffrent from this divs id or is undefined 

       var currentId = $(this).attr('id'); //set currentId Var to this divs id 

       $(this).addClass("foo"); //add class foo to this div 

      }else{ 
          //Else do nothing 
      }; //endIfElse 

     }else{ 
      $(this).removeClass("foo");  //Else remove the foo class from this div 
     };          //endIfElse 

    });        //end each 

}); 
+0

'$ currentId' имеет нулевое значение, это не имеет значения, так как из но –

+2

Объявить переменную за пределами обработчика события. 'var currentId = ...; $ ('# content #). on (...); ' – millimoose

+1

Также' typeof (foo) ===' undefined'' - это немного запаха кода, который должен был указывать на это решение. Вместо того, чтобы проверять, существует ли переменная, вы должны создать ее в соответствующей точке с некоторым начальным значением ** до **, это необходимо. – millimoose

ответ

0

Почему бы не просто положить var currentId просто из любой функции или обработчик? Он не исчезнет, ​​пока отображается страница.

Теперь, чтобы сделать его реальным постоянным, вы можете хранить и читать файлы cookie (используя document.cookie).

+0

по какой-то причине он по-прежнему возвращается к неопределенному. Мне нужно значение, назначенное для var, чтобы оставаться вместе с ним. –

1

Этот код не является большим в целом, но и исправить вашу конкретную проблему, поместите объявление переменной вне блока кода:

var currentId; 
$("#content").on("scroll resize", function() { //on scroll 
    var pos = $("#frontpage").offset(); //take front page position in variable 
    $('.page').each(function($currentId) { //for each div with a class of page 
     if (pos.top >= $(this).offset().top && pos.top < $(this).next().offset().top) { //if this divs position is in the correct range 
      if (currentId != $(this).attr('id') || typeof currentId == 'undefined') { //if currentId Var is diffrent from this divs id or is undefined 
       currentId = $(this).attr('id'); //set currentId Var to this divs id 
       $(this).addClass("foo"); //add class foo to this div 
      } else { 
       //Else do nothing 
      }; //endIfElse 
     } else { 
      $(this).removeClass("foo"); //Else remove the foo class from this div 
     }; //endIfElse 
    }); //end each 
}); 
+0

по какой-то причине все еще возвращается к неопределенному. Мне нужно, чтобы значение, присвоенное var, оставалось вместе с ним –

Смежные вопросы