2013-02-27 4 views
1

У меня возникли проблемы с получением бит «else» от этой работы. Кто-нибудь знает, в чем проблема?Невозможно изменить CSS снизу с помощью jQuery

var navOpen = false; 
       if (navOpen == false) { 
        $("nav").click(function() { 
         $(this).css("bottom","0"); 
         navOpen = true; 
        }); 
       } else { 
        $("nav").click(function() { 
         $(this).css("bottom","-84"); 
         navOpen = false; 
        }); 
       } 
+0

0 Где остальная часть кода? yo устанавливают 'navOpen' значение false перед' if', поэтому он никогда не будет оценивать бит else. – Moak

+0

Вам нужно указать 'px' или '%' на -84. –

ответ

3

Условие находится в неподходящем месте.

var navOpen = false; 
$("nav").click(function() { 
     if (navOpen == false) { 
      $(this).css("bottom","0"); 
      navOpen = true; 
     } else { 
      $(this).css("bottom","-84px"); 
      navOpen = false; 
     } 
}); 
+0

Спасибо, что сработало отлично. Не следует поздно запоздать, что-то перевернуло голову. Я соглашусь, когда это позволит мне через несколько минут. – JacobTheDev

5

Вы связывания нескольких обработчиков к одному элементу, вы можете использовать css метод:

$("nav").click(function() { 
    $(this).css("bottom", function(i, bottom) { 
     return bottom === '0px' ? '-84px' : '0px'; 
    // return navOpen ? '-84px' : '0px'; 
    }); 
}) 
+0

Побей меня. Вам не хватало единицы (px) и связывало несколько раз (очень плохо). –

+0

Ему может потребоваться больше с переменной 'navOpen', но это изящное решение +1 – Moak

2

Вам нужно определить измерение (например, ПВ,%) , CSS не поддерживает только нумерацию параметров, таких как атрибут HTML.

+1

Вау, не могу поверить, что я не пробовал это. Благодарю. Я участвую в другом ответе, потому что он исправил еще одну проблему, с которой я столкнулся, но вы получаете преимущество. – JacobTheDev