jquery click change class

39,971

Solution 1

You need to use a single toggle event. You are setting the click event twice and that won't work.

jsfiddle

Solution 2

Use toggle instead of show/hide and toggleClass instead of add/remove, and merge into a single click event. Something like this (untested and probably doesn't work):

$("#click").click(function() {
    $("#ccc").toggle().animate();
    $(this).toggleClass('bbb aaa');
});

Solution 3

You are looking for the toggle event, it appears.

$(document).ready(function () {
    $('div#click').toggle(
        function () {
            $('div#ccc').slideDown('fast').show();
            $('div#click').removeClass('bbb').addClass('aaa');
        },
        function () {
            $('div#ccc').slideDown('fast').hide();
            $('div#click').removeClass('aaa').addClass('bbb');
        });
    });
Share:
39,971
cj333
Author by

cj333

web develop, sports, music, all without Borders.

Updated on May 20, 2020

Comments

  • cj333
    cj333 about 4 years

    I am studying jquery, I want make a effection as: first click, slider down the div#ccc and change the link class to 'aaa'; click again, slider up the div#ccc and change the link class back to 'bbb'. now slider down can work, but removeClass, addClass not work. how to modify so that two effection work perfect? thanks.

    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript">
    jQuery(document).ready(function(){              
    $("#click").click(function() {
        $("#ccc").slideDown('fast').show();
        $(this).removeClass('bbb').addClass('aaa');
    });
    $("#click").click(function() {
        $("#ccc").slideDown('fast').hide();
        $(this).removeClass('aaa').addClass('bbb');
    });
    });
    </script>
    <style>
    #ccc{display:none;}
    </style>
    <div id="click" class="bbb">click</div>
    <div id="ccc">hello world</div>
    
  • Code Maverick
    Code Maverick about 13 years
    $(this).toggleClass('bbb aaa'); would be even better.
  • Dan
    Dan over 10 years
    Nice & clean solution. Thanks