2014-09-19 147 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