2014-09-19 2 views
0

У меня есть несколько форм, которые изначально скрыты на странице. Когда пользователь нажимает на определенную ссылку на странице, соответствующая форма показывает использование jQuery slideToggle. То, как я делаю это сейчас, кажется, переоценено, и должен быть более сжатый способ сделать это. Может ли кто-нибудь помочь мне быть более эффективным в этом, т. Е. Меньше кода, передовой практики и т. Д.?jQuery with multiple slideToggle

// Show & Hide the forms on the "We need your help" page 
     jQuery('.contribute-form').hide(); 
     jQuery('.translate-form').hide(); 
     // Contribute Form 
     jQuery('.contribute').on('click', function(){ 
      if(jQuery('.translate-form').css('display', 'block')){ 
       jQuery('.translate-form').slideToggle('slow'); 
       jQuery('.contribute-form').slideToggle('slow'); 
      } else if(jQuery('.donate-form').css('display', 'block')){ 
       jQuery('.donation-form').slideToggle('slow'); 
       jQuery('.contribute-form').slideToggle('slow'); 
      } else { 
       jQuery('.contribute-form').slideToggle('slow'); 
      } 
     }); 
     // Translate Form 
     jQuery('.translate').on('click', function(){ 
      if(jQuery('.donate-form').css('display', 'block')){ 
       jQuery('.donate-form').slideToggle('slow'); 
       jQuery('.translate-form').slideToggle('slow'); 
      } else if(jQuery('.contribute-form').css('display', 'block')){ 
       jQuery('.contribute-form').slideToggle('slow'); 
       jQuery('.translate-form').slideToggle('slow'); 
      } else { 
       jQuery('.translate-form').slideToggle('slow'); 
      } 
     }); 
     // Donate Form 
     jQuery('.donate').on('click', function(){ 
      if(jQuery('.translate-form').css('display', 'block')){ 
       jQuery('.translate-form').slideToggle('slow'); 
       jQuery('.donate-form').slideToggle('slow'); 
      } else if(jQuery('.contribute-form').css('display', 'block')){ 
       jQuery('.contribute-form').slideToggle('slow'); 
       jQuery('.donate-form').slideToggle('slow'); 
      } else { 
       jQuery('.donate-form').slideToggle('slow'); 
      } 
     }); 

ответ

1

Во-первых, используйте псевдоним доллара для более чистого кода. Затем объедините селектора в одиночных операторах. Наконец, используйте метод is() с :visible, а не с помощью CSS.

jQuery(function($) { 
    $('.contribute').on('click', function(){ 
     if ($('.translate-form').is(':visible')) { 
      $('.translate-form, .contribute-form').slideToggle('slow'); 
     } else if ($('.donate-form').is(':visible')) { 
      $('.donation-form, .contribute-form').slideToggle('slow'); 
     } else { 
      $('.contribute-form').slideToggle('slow'); 
     } 
    }); 
}); 

Я уверен, что ваша логика может быть упрощена с использованием классов и обхода DOM. Если вы хотите разместить свой код в демо на http://jsfiddle.net, мы можем предложить больше предложений.

+0

Спасибо! Это выглядит хорошо для меня. Наверное, я должен был упомянуть, что я разрабатываю Wordpress, и это причина использования 'jQuery' vs' $ '. Спасибо за помощь! – dericcain

+0

Обертка кода в функции jQuery, как и я, позволяет использовать псевдоним доллара, как у меня здесь. – isherwood

+0

Я буду полностью использовать это с этого момента! Спасибо, что помогли мне сделать это проще. – dericcain