Issue
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
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>
Answered By - Satpal
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.