2015-06-13 3 views
0

У меня есть такая ситуация: у меня есть меню, и оно только отображается, затем нажимается кнопка. Все работает нормально, за исключением того, что после того, как меню открыто, я хочу, чтобы он закрылся. Символ кнопки не изменяется и застревает «закрыть». Что я сделал не так?jQuery изменение символов кнопки переключения

$(document).ready(function() { 
    $(".menu-button").click(function() { 
     $(".first-page nav").slideToggle(500); 
    }); 
    if ($('.menu-button').hasClass("menu-open")) { 
     $('.menu-button').on('click', function() { 
      $(this).removeClass('menu-open'); 
      $(this).addClass('menu-close'); 
     }); 
    } 
    if ($('.menu-button').hasClass("menu-close")) { 
     $('.menu-button').on('click', function() { 
      $(this).removeClass('menu-close'); 
      $(this).addClass('menu-open'); 
     }); 
    } 
}); 

Fiddle: http://jsfiddle.net/a0kscpa3/

+0

Вам не нужны отдельные события щелчка. Определите событие click и добавьте в него условия if. – Tyr

+0

'$ ('. Menu-button'). On ('click', function() {' даже не вызывается. Поместите предупреждение, и вы увидите, что он не вызван. – spiderman

+0

не смог изменить мой комментарий выше. поэтому я упоминал здесь .. Я хотел сказать «второй» '$ ('. menu-button'). on ('click', function() {' никогда не будет вызываться .. – spiderman

ответ

0

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

Взгляните на эту jsFiddle

$('.btn').on('click',function(e){ 
    e.preventDefault(); 
    $('.menu').stop().slideToggle(); 
    $(this).toggleClass('menu-open'); 
}); 

Также функция jQuery stop() используется для предотвращения анимации из в очередь, когда пользователь нажимает несколько раз.

0

Как я уже говорил в комментариях, Ваше второе if состояния в исходном сообщении никогда не будет называться. И, как сказал @Tyr, вам необходимо применить условие, как это,

$(document).ready(function() { 
    $(".menu-button").click(function() { 
     $(".first-page nav").slideToggle(500); 
    }); 

    $('.menu-button').on('click', function() { 

     if ($('.menu-button').hasClass("menu-open")) { 

      $(this).removeClass('menu-open'); 
      $(this).addClass('menu-close'); 
     } 
     else if ($('.menu-button').hasClass("menu-close")) { 
      $(this).removeClass('menu-close'); 
      $(this).addClass('menu-open'); 
     } 
    }); 

}); 
+0

Спасибо, этот код работает отлично! – lituoklis13

+0

u'r добро пожаловать! Продолжайте движение – spiderman

+0

обновленный скрипт - http://jsfiddle.net/a0kscpa3/7/ – spiderman

0
$(document).ready(function(){ 
     var flag= false; 
     $(".menu-button").click(function(){ 
      $(".first-page nav").slideToggle(500); 
      if(flag==false){ 
       flag = true; 
       $(this).removeClass('menu-open'); 
       $(this).addClass('menu-close'); 
      }else{ 
       flag = false; 
       $(this).removeClass('menu-close'); 
       $(this).addClass('menu-open'); 
      } 
     }); 


    }); 
+0

http://jsfiddle.net/a0kscpa3/4/ здесь – vel