Note that there are some explanatory texts on larger screens.

plurals
  1. POMultiple onclick panels code efficiency
    primarykey
    data
    text
    <p>The following code works well, however, as a jquery beginner, even I can see that this code can be much more simplified (into a few lines probably). Should I use arrays and foreaches? Or is there a specific jquery function? Your knowledge is appreciated.</p> <pre><code>/* 1 panel */ $(".button_panel_1").click(function(){ $(".panel_2, .panel_3, .panel_4, .panel_5, .panel_6, .panel_7").hide(222); $(".button_main").removeClass("active"); $(".panel_1").slideToggle(222); $(this).toggleClass("active"); return false; }); /* 2 panel */ $(".button_panel_2").click(function(){ $(".panel_3, .panel_4, .panel_5, .panel_6, .panel_7, .panel_1").hide(222); $(".button_main").removeClass("active"); $(".panel_2").slideToggle(222); $(this).toggleClass("active"); return false; }); /* 3 panel */ $(".button_panel_3").click(function(){ $(".panel_2, .panel_4, .panel_5, .panel_6, .panel_7, .panel_1").hide(222); $(".button_main").removeClass("active"); $(".panel_3").slideToggle(222); $(this).toggleClass("active"); return false; }); /* 4 panel */ $(".button_panel_4").click(function(){ $(".panel_2, .panel_3, .panel_5, .panel_6, .panel_7, .panel_1").hide(222); $(".button_main").removeClass("active"); $(".panel_4").slideToggle(222); $(this).toggleClass("active"); return false; }); /* 5 panel */ $(".button_panel_5").click(function(){ $(".panel_2, .panel_3, .panel_4, .panel_6, .panel_7, .panel_1").hide(222); $(".button_main").removeClass("active"); $(".panel_5").slideToggle(222); $(this).toggleClass("active"); return false; }); /* 6 panel */ $(".button_panel_6").click(function(){ $(".panel_2, .panel_3, .panel_4, .panel_5, .panel_7, .panel_1").hide(222); $(".button_main").removeClass("active"); $(".panel_6").slideToggle(222); $(this).toggleClass("active"); return false; }); /* 7 panel */ $(".button_panel_7").click(function(){ $(".panel_2, .panel_3, .panel_4, .panel_5, .panel_6, .panel_1").hide(222); $(".button_main").removeClass("active"); $(".panel_7").slideToggle(222); $(this).toggleClass("active"); return false; }); /* Close button */ $(".panel_header_close").click(function(){ $(".panel_main").hide(222); $(".button_main").removeClass("active"); return false; }); </code></pre> <p><strong>I've managed to narrow the code down to this, quite nice i'd say:</strong></p> <pre><code> $.each(['1', '2', '3', '4', '5', '6', '7'], function(index, value) { $(".button_panel_" + value).click(function(){ $(".panel_" + value).slideToggle(222); $(".panel_main").not(".panel_" + value).hide(222); $(".button_main").not(this).removeClass("active"); $(this).toggleClass("active"); return false; }); }); </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload