html - Multiple jQuery slidetoggles overlapping -


so new jquery , have found couple examples of slidetoggle of them overlapping. here code far:

jquery:

<script src="jquery-1.9.1.js"> </script> <script>     $ (document).ready(function(){         $("#about").click(function(){     $("#aboutp").slidetoggle("medium");   }); });  </script> <script>     $(document).ready(function () {         $("#discounts").click(function () {             $("#discountsp").slidetoggle("medium");          });     });  </script> <script>     $ (document).ready(function(){         $("#news").click(function(){     $("#newsp").slidetoggle("medium");    }); });  </script> 

html:

<div id="about">about us</div>         <div id="aboutp">this guys</div>         <div id="discounts">discounts</div>         <div id="discountsp">dicounts...blah blah blah blah blah</div>         <div id="news">news</div>         <div id="newsp">here news!!</div> 

(the p @ end of about, discounts, , news information or paragraph divs hidden , shown when others clicked)

css:

#about,#discounts,#news {     position: fixed;     top: 100px;     background-color:lightblue;     z-index: 11;  } #about {     right: 10px;     padding-left: 50px;     padding-right: 50px;     padding-top: 5px;     padding-bottom: 5px;     text-align: center;  } #discounts {     right: 150px;     padding-left: 50px;     padding-right: 50px;     padding-top: 5px;     padding-bottom: 5px;     text-align: center;  } #news {     right: 300px;     padding-left: 50px;     padding-right: 50px;     padding-top: 5px;     padding-bottom: 5px;     text-align: center; }  #newsp,#discountsp,#aboutp {     top: 300px;     right: 50px;     position: fixed;     display: none; } 

see if looking for. can simplify quite lot of code providing classes, 1 click handler sufficient.

html

<div id="about" class="trigger">about us</div> <div id="aboutp" class="content">this bro</div> <div id="discounts" class="trigger">discounts</div> <div id="discountsp" class="content">dicounts...blah blah blah blah blah</div> <div id="news" class="trigger">news</div> <div id="newsp" class="content">here news!!</div> 

js

    $(document).ready(function () {       $('.trigger').click(function(){        var p = '#' + this.id + 'p'; //get id +p content's id toggle.         $('.content').not(p).slideup(); //slideup not content.         $(p).slidetoggle('medium'); //toggle display of click element's respective content.       });    }); 

demo

a cleaner approach provide data-attribute has selector of target.

<div id="about" class="trigger" data-target="#aboutp">about us</div> <div id="aboutp" class="content">this bro</div> <div id="discounts" class="trigger" data-target="#discountsp">discounts</div> <div id="discountsp" class="content">dicounts...blah blah blah blah blah</div> <div id="news" class="trigger" data-target="#newsp">news</div> <div id="newsp" class="content">here news!!</div>   $(document).ready(function () {           $('.trigger').click(function(){             var p = $(this).data('target'); //get selector of target data.             $('.content').not(p).slideup(); //slideup not content.             $(p).slidetoggle('medium'); //toggle display of click element's respective content.           });        }); 

demo


Comments

Popular posts from this blog

python - How to create a legend for 3D bar in matplotlib? -

java - Multi-Label Document Classification -

php - Dynamic url re-writing using htaccess -