2016-05-31 34 views
-1

Ich bin neu bei JQuery, habe es aber geschafft, es so zu arbeiten, wie ich will. Das Problem ist, es ist ein wenig verworren und könnte leicht außer Kontrolle geraten, wenn ich weitere Optionen hinzufügen.Überprüfen und aufräumen meine JQuery-Funktion

Ich versuche, divs basierend auf einer Dropdown-Auswahl des Benutzers anzuzeigen und auszublenden. Ich habe ein JSFiddle mit dem gemacht, wo ich bisher bin, aber ich denke, es könnte mit einer gewissen Straffung funktionieren.

$(function() { 
 
    $("select").change(function() { 
 

 
     if ($(this).val() == "I have a query") { 
 
      $("#cf-query").show("slow") && $("#cf-booking").hide("slow") 
 
     } else if ($(this).val() == "I would like to book") { 
 
      $("#cf-booking").show("slow") && $("#cf-query").hide("slow") 
 

 
     } else { 
 
      $(".cf-section").hide("slow"); 
 
     } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<h2>What is the nature of your enquiry*:</h2> 
 

 
<select id="cf-dd-nature"> 
 
    <option value="">--</option> 
 
    <option value="I have a query">I have a query</option> 
 
    <option value="I would like to book">I would like to Book</option> 
 
</select> 
 

 
<div class="cf-section" id="cf-query" style="display: none;"> 
 
    <h2>Query</h2> 
 
    <p>First Name:</p> 
 
    <p>Surname*:</p> 
 
    <p>Email Address*:</p> 
 
    <p>Telephone number*:</p> 
 
</div> 
 

 

 
<div class="cf-section" id="cf-booking" style="display: none;"> 
 
    <h2>Booking</h2> 
 
    <p>First Name:</p> 
 
    <p>Telephone number*:</p> 
 
</div>

Könnte mir jemand irgendwelche Hinweise geben? Ich bin bereit zu lernen! Übrigens verwende ich CF7, um das Formular zu erstellen.

JSFiddle: http://jsfiddle.net/rchampniss/mdy7acwn/

+2

Wahrscheinlich eine bessere Anpassung für http://codereview.stackexchange.com/ – j08691

+0

Nur zwei Dinge, die ich vorschlagen würde, sind Ihre Werte einfacher zu machen und $ nicht zu verwenden ("# cf-query"). Show ("langsam")) && $ ("# cf-booking") ausblenden ("langsam"). Töte das && und beende es mit; und schreibe es in zwei Zeilen. Ansonsten, so machst du es. – nurdyguy

+0

Ich werde dem Dropdown 5 weitere Optionen hinzufügen, mit 5 weiteren Kontakt divs. Muss ich sie einzeln verstecken oder gibt es eine Möglichkeit zu sagen "Wenn die Div-ID nicht der ausgewählte Wert ist, dann verstecke sie"? –

Antwort

0

Ich habe die Lösung gefunden!

$(function() { 
 
     $('#cf-dd-nature').change(function(){ 
 
      $('.cf-section').hide(); 
 
      $('#' + $(this).val()).show(); 
 
     }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script><h2>What is the nature of your enquiry*:</h2> 
 

 
<select id="cf-dd-nature"> 
 
    <option value="">--</option> 
 
    <option value="cf-query">I have a query</option> 
 
    <option value="cf-booking">I would like to Book</option> 
 
</select> 
 

 
<div class="cf-section" id="cf-query" style="display: none;"> 
 
    <h2>Query</h2> 
 
    <p>First Name:</p> 
 
    <p>Surname*:</p> 
 
    <p>Email Address*:</p> 
 
    <p>Telephone number*:</p> 
 
</div> 
 

 

 
<div class="cf-section" id="cf-booking" style="display: none;"> 
 
    <h2>Booking</h2> 
 
    <p>First Name:</p> 
 
    <p>Telephone number*:</p> 
 
</div>

Vielen Dank für Ihre Hilfe!