2

My toggles work both fine, but only the first time. Whats wrong with it?

$(".add-to-list").click(function(){ 
 $(this).removeClass( "appear" );      
 $(this).addClass( "is-on-list appear" );    
 $(this).removeClass( "add-to-list" );         
});

$(".is-on-list").click(function(){   
 $(this).removeClass( "appear" );     
 $(this).addClass( "add-to-list appear" );     
 $(this).removeClass( "is-on-list" );      
});

2 Answers2

1

try this code:

var selector = 'button';

$(selector).on('click', function(){
    $(this).toggleClass('active');
});
.active{color:green;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="add-to-list">Hi</button>
<button class="is-on-list">there</button>
Sumit Patel
  • 4,530
  • 1
  • 10
  • 28
0

Since you are only initializing the .click listener once, using that .click code, the second time you click it won't work.

Because the code only bind the listener on the class once.

If you're going to have a listener on a dynamically added element, use it like this

$(document).on('click', '.add-to-list', function(){ 
 $(this).removeClass( "appear" );      
 $(this).addClass( "is-on-list appear" );    
 $(this).removeClass( "add-to-list" );         
});

$(document).on('click', '.is-on-list', function(){   
 $(this).removeClass( "appear" );     
 $(this).addClass( "add-to-list appear" );     
 $(this).removeClass( "is-on-list" );      
});
Hari Setiawan
  • 126
  • 1
  • 9