2014-05-16 2 views
0

Я начал изучать некоторые JS и jQuery, и я пытаюсь получить меню переключения, которое сбрасывает счетчик кликов в другом меню, когда он открывается.Переключение меню и сброс счетчика вызовов

And here is the JS code

// JavaScript Document 
     var toggleclicks = $('.toggle').data('clicks'); 
     var menuclicks = $('.toggle-menu').data('clicks');  
$(document).ready(function() { 


//WRAPPER// 
    $('.toggle').click(function() { 
     ++toggleclicks; 
     if (toggleclicks%2 === 0) { 
     // even clicks 
     $('.wrapper').css({'margin-top': '-260px'}); 
     $('.icon-menu, .icon-bell').css({'color': '#ABABAB'}); 
     $('.toggle-menu').data('clicks',0) 
     } else { 
     // odd clicks 
     $('.wrapper').css({'margin-top': '0'}); 
     $('.icon-bell').css({'color': 'red'}); 
     $('.contact, .diet, .hours, .classes, .gym').css({'margin-bottom': '-300px'}); 
     $('.main-nav').css({'width': '0'}); 
     $('.icon-menu').css({'color': '#ABABAB'}); 
     } 
    }); 

//NAV BAR// 
    $('.toggle-menu').click(function() { 
     ++menuclicks; 
     if (menuclicks%2 === 0) { 
     // even clicks 
     $('.main-nav').css({'width': '0'}); 
     $('.icon-menu, .icon-bell').css({'color': '#ABABAB'}); 
     $('.toggle').data('clicks',0) 
     } else { 
     // odd clicks 
     $('.main-nav').css({'width': '50%'}); 
     $('.icon-menu').css({'color': 'red'}); 
     $('.icon-bell').css({'color': '#ABABAB'}); 
     $('.wrapper').css({'margin-top': '-260px'}); 
     $('.contact, .diet, .hours, .classes, .gym').css({'margin-bottom': '-300px'}); 
     } 
    }); 

** As you can see, the toggle won't work. любые предложения? **

Спасибо!

+1

'if (toggleclicks% 2 === '0')' будет 'if (toggleclicks% 2 === 0)' Вы всегда будете получать число как напоминание, а не строку! –

+0

Что означает «не работает»? Вы получаете сообщение об ошибке в консоли браузера? Любое неожиданное поведение? Включение соответствующего HTML-кода и/или настройка jsfiddle (http://jsfiddle.net/) помогут. – Scottie

+0

Вы уверены, что '$ ('. Toggle')' и '$ ('. Toggle-menu')' доступны в DOM в начале? Может быть, что jQuery делает noop, возвращающий null для кликов, потому что инструкции находятся вне готовой функции и выполняются во время интерпретации, а не в DOMReady. – Sukima

ответ

0

enter code here

Как вы можете видеть на картинке, когда вы используете ===, тип вопросов состояния.

=== соответствует точному типу обоих значений.

поэтому в вашем случае вы сохраняете числовые данные в кликах данных, но пытаетесь получить доступ к '0', который является строкой. Так что это не соответствует.

Вместо этого вы можете просто использовать ==, который будет соответствовать как

+0

Спасибо за ваш быстрый ответ! я немного изменил код, используя другой метод для оператора if. любая идея, как это сделать с глобальными переменными? – BoazKG

0

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

var toggleclicks = $('.toggle').data('clicks'); 
var menuclicks = $('.toggle-menu').data('clicks'); 
$(document).ready(function() { 
//WRAPPER// 

$('.toggle').click(function() { 
    ++toggleclicks; 
    if (toggleclicks%2 === 0) { 
    // even clicks // 
    $('.wrapper').css({'margin-top': '-260px'}); 
    $('.icon-menu, .icon-bell').css({'color': '#ABABAB'}); 
    $('.toggle-menu').data('clicks',0) //THIS IS THE OThER MENU 
    } else { 
    // odd clicks 
    $('.wrapper').css({'margin-top': '0'}); 
    $('.icon-bell').css({'color': 'red'}); 
    $('.main-nav').css({'width': '0'}); 
    $('.icon-menu').css({'color': '#ABABAB'}); 
    } 
    //$('.toggle').data("clicks", !toggleclicks); 
}); 
}); 
+0

Я использовал ваш совет, и мой код выглядит следующим образом: http://jsfiddle.net/jb66H/1/ и теперь он не переключается .. проверьте http://boazkerengil.com – BoazKG

0

ОК, iv'e удалось решить эту проблему!

Я избавился от счетчика «кликов» и заменил его на числовой счетчик, с глобальными переменными и линией сброса в конце инструкции else.

// JavaScript Document 
var toggleclicks = 0; 
var menuclicks = 0; 

$(document).ready(function() { 
//WRAPPER// 
    $('.toggle').click(function() { 
     ++toggleclicks; 
     if (toggleclicks%2 === 0) { 
     // even clicks 
     $('.wrapper').css({'margin-top': '-260px'}); 
     $('.icon-menu, .icon-bell').css({'color': '#ABABAB'}); 
     } else { 
     // odd clicks 
     $('.wrapper').css({'margin-top': '0'}); 
     $('.icon-bell').css({'color': 'red'}); 
     $('.contact, .diet, .hours, .classes, .gym').css({'margin-bottom': '-300px'}); 
     $('.main-nav').css({'width': '0'}); 
     $('.icon-menu').css({'color': '#ABABAB'}); 
     menuclicks = 0; 
     } 
    }); 

//NAV BAR// 
    $('.toggle-menu').click(function() { 
     ++menuclicks; 
     if (menuclicks%2 === 0) { 
     // even clicks 
     $('.main-nav').css({'width': '0'}); 
     $('.icon-menu, .icon-bell').css({'color': '#ABABAB'}); 
     } else { 
     // odd clicks 
     $('.main-nav').css({'width': '50%'}); 
     $('.icon-menu').css({'color': 'red'}); 
     $('.icon-bell').css({'color': '#ABABAB'}); 
     $('.wrapper').css({'margin-top': '-260px'}); 
     $('.contact, .diet, .hours, .classes, .gym').css({'margin-bottom': '-300px'}); 
     toggleclicks = 0; 
     } 
    }); 

Вы можете проверить его на http://boazkerengil.com

Спасибо всем за вашу помощь, это было очень полезно.

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