Try using only the switch.
$('#clickme').toggle( function(){alert('click 1');}, function(){alert('click 2');} );
Be that as it may, it does nothing at the first click, because it only binds the event handler to this point.
EDIT:
I did not fully read the message. My bad.
$('body').on('click', '#clickme', function() { var state = $(this).data('state'); switch(state){ case 1 : case undefined : alert('click 1'); $(this).data('state', 2); break; case 2 : alert('click 2'); $(this).data('state', 1); break; } });
source share