2014-09-19 142 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 2014-09-19 22:17:05

+0

像我这样用jQuery函数包装代码可以让你像我这里一样使用美元别名。 – isherwood 2014-09-20 01:53:52

+0

从现在开始我会完全使用它!感谢您帮助我更轻松地做到这一点。 – dericcain 2014-09-20 01:54:59