2012-01-21 6 views
3

Я написал код jquery, который собирается развернуть определенные элементы при наведении. Я хочу, чтобы код расширялся, если не был расширен. Вот мой код. Кажется, он работает неправильно.Если переменная = число, сделайте X, иначе ничего не сделайте

$(document).ready(function() { 
    var labelstatus = 0; 
}); 
$(document).ready(function() { 
    $("a.rm").hover(function() { 
     if (labelstatus != 1){ 
      $("#expensereduction,#envimpact,#mtextlft,#initaud,#energaud").fadeOut(); 
      var currentFontSize = $('.initiate').css('font-size'); 
      var currentFontSizeNum = parseFloat(currentFontSize, 10); 
      var newFontSize = currentFontSizeNum*3; 
      $('.initiate').delay(500).animate({ 
       fontSize: newFontSize 
      }); 
      return false; 
      var labelstatus = 1; 
     } 
     else { 
     } 
    }); 
}); 
+1

Что означает «не работает правильно»? Что это делает, это неверно? –

+1

Почему два $ (document) .ready (function()? – j08691

ответ

3

Вы объявляете локальные переменные внутри функций, поэтому они независимы друг от друга. Кроме того, каждый раз вы получаете новую переменную, поэтому предыдущее значение не сохраняется.

Кроме того, вы вызываете return перед назначением переменной, которая выйдет из функции, поэтому назначение никогда не произойдет.

Вы должны объявить переменную в объеме вне функций:

$(document).ready(function() { 

    var labelstatus = 0; 

    $("a.rm").hover(function() { 
    if (labelstatus != 1){ 
     $("#expensereduction,#envimpact,#mtextlft,#initaud,#energaud").fadeOut(); 
     var currentFontSize = $('.initiate').css('font-size'); 
     var currentFontSizeNum = parseFloat(currentFontSize); 
     var newFontSize = currentFontSizeNum * 3; 
     $('.initiate').delay(500).animate({ 
      fontSize: newFontSize 
     }); 
     labelstatus = 1; 
     return false; 
    } 
    else { 
    } 
    }); 

}); 

также: функция parseFloat не имеет параметра базисное.

+0

Awesome. Спасибо за объяснение. Не знал, что var определен только Локальные переменные Спасибо! – dylfreak6494

+0

@ dylfreak6494: Ключевое слово 'var' используется для объявления всех переменных. Если оно используется внутри функции, оно объявит локальную переменную, и если она будет использоваться в глобальной области видимости, она создаст глобальную переменную. вы используете переменную без объявления ее, она будет неявно объявлена ​​в глобальной области. – Guffa

7

это ...

return false; 
    var labelstatus = 1; 

должно быть ...

labelstatus = 1; 
    return false; 

... и это ...

$(document).ready(function() { 
    var labelstatus = 0; 
}); 

должны быть ...

var labelstatus = 0; 

  • код, который приходит после return заявления не будет работать

  • Использования var делает labelstatus локальные по отношению к функции

  • Вы действительно не нужны две $(document).ready(function() { звонков , Поместите свой код в один, и вы можете сделать labelstatus локальным для этого обработчика, чтобы весь код внутри мог его использовать.

+2

+1 для напоминания о var scope. – davidethell

+0

Спасибо, просто изучая jquery и т. Д. – dylfreak6494

0

labelstatus не будет установлен 1 как функция уже вернулась в строке раньше.

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