Here is reusable jquery script for dropdown elements. You can keep every dropdown open at the same time or hide all other dropdowns when you open one.
You can add a new dropdown element declaratively via html. You need to add the attribute data-toggleclick="some-id"
for a button and data-toggleblock="some-id"
for a dropdown block.
codepen demo: https://codepen.io/ktr92/pen/LYgyqZE
Solution example
HTML
<div> <div class="wrapper"> <button data-toggleclick="block1">Open block 1</button> <div data-toggleblock="block1"> Block 1 </div> </div> <div class="wrapper"> <button data-toggleclick="block2" >Open block 2</button> <div data-toggleblock="block2"> Block 2 </div> </div> </div>
CSS
[data-toggleblock] { display: none; } [data-toggleblock].active { display: block; } .container { width: 320px; } .wrapper { height: 100px; position: relative; width: 320px; } [data-toggleblock] { padding: 10px; border: 1px solid #000; margin-bottom: 30px; position: absolute; top: 50px; width: 100%; z-index: 1; } [data-toggleclick] { background: #ccc; padding: 10px 10px; border: none; display: block; width: 100%; font-size: 20px; }
JS (jquery)
// show element by click on button $('[data-toggleclick]').each(function() { $(this).on('click', function(e) { $(this).toggleClass('active') e.preventDefault() let dropdown = $(this).data('toggleclick') // if you want to hide all other dropdowns // $('[data-toggleblock].active').not($(`[data-toggle=${dropdown}]`)).removeClass('active') // $('[data-toggleclick].active').not($(`[data-toggleclick=${dropdown}]`)).removeClass('active') $(`[data-toggleblock=${dropdown}]`).toggleClass('active') }) })
Top comments (0)