Using JQuery to toggle div visibility
css, html, javascript, jquery
Solution
Problem with your code is that its last function call is `.hide()`, thus it will always hide the div
Simply use .toggle(), it display or hide the matched elements.
$(function() {
$('.expander').on('click', function() {
$('#TableData').toggle();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<h3><img src="toggle.png" class="expander" alt="Expand" />
</h3>
<div id="TableData">The Core Knowledge Sequence UK is a guideline of the fundamental skills and content to cover in English, maths, history and geography, science, music and visual arts.</div>
<p class="traversing"></p>
OR
$(function () {
$('.expander').on('click', function () {
$('#TableData').slideToggle();
});
});
You can use .slideToggle(), if you want to display or hide the matched elements with a sliding motion
$(function() {
$('.expander').on('click', function() {
$('#TableData').slideToggle();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<h3><img src="toggle.png" class="expander" alt="Expand" />
</h3>
<div id="TableData">The Core Knowledge Sequence UK is a guideline of the fundamental skills and content to cover in English, maths, history and geography, science, music and visual arts.</div>
<p class="traversing"></p>
Problem
I'm writing some jquery code to toggle a Div visibility. I followed the method posted here: http://jsfiddle.net/Ga7Jv/. When the user clicks an image (next to a H2 tag) i want it to toggle the div. Here is the Jquery: ``` $(function() { $(".expander").live('click', function(){ $(this).next("#TableData").slideDown(); $(this).removeClass('expander'); $(this).addClass('expanded'); }); $(".expanded").live('click', function(){ $(this).next("#TableData").slideUp(); $(this).removeClass('expanded'); $(this).addClass('expander'); }); ``` Here is the HTML: ``` <h3><img src="toggle.png" class ="expander" alt="Expand"/> Tabular Data</h3> <div id="TableData"> //Content </div> ``` The is css applied to the class expander and when i click the button it appears that the css changes, as i would expect. So i assume the code is finding the toggle button and switching out the classes alright. However it doesn't perform the action i need, which is to slide the div up or down depending on that class. The other way i've tried to achieve this is with this: ``` $(function(){ $('.expander').live('click',function(){ $('#TableData').show(); $('#TableData').hide(); }); ``` This only closes the div and does not open again when i click it. I've also had it so it closes fine but when i open it, it immediately closes again. Thanks