2014-01-02 2 views
0

У меня есть меню стиля аккордеона, я пытаюсь удалить класс open, когда в любом месте тега тела щелкнет, чтобы он обрушился. У меня есть код, но не работает, получить следующее сообщение об ошибке в Chrome:щелкните внутри тела, чтобы удалить класс, используя jQuery

Uncaught TypeError: Object has no method 'hasClass'

Код:

var toggleMainNav = function ($mainNav) { 
    var isOpen = $mainNav.hasClass('open'); 

    if (isOpen) { 
     $('body').unbind('click'); 
     $mainNav.removeClass('open'); 
    } else { 
     $('body').bind('click', toggleMainNav); 
     $mainNav.addClass('open'); 
    } 
}; 
+3

Вы должны убедиться, что вы получаете объект Jquery, а не просто дом элемент. 'console.log ($ mainNav);' перед тем, как вы объявите 'isOpen' и убедитесь, что у вас есть то, что вы думаете. – scrappedcola

ответ

0

Вы, кажется, с помощью DOM, в то время как вы хотите использовать объект jQuery.

Wrap переменного в стиле JQuery:

$($mainNav).hasClass("open"); 
+0

Это имеет смысл, работая сейчас, спасибо! – user3087370

+0

Ahh, работает в Chrome и IE, но не в Firefox, я получаю эту ошибку в Firebug: TypeError: $ mainNav.addClass не является функцией – user3087370

+0

Может быть, я говорю не-смысл, но '' 'вашей переменной может привести к ошибке. Попробуйте – EoiFirst

1

Использование toggleClass

$("body").click(function(){ 
     $mainNav.toggleClass("open"); 
    }); 
Смежные вопросы