Jquery .click function with If Else Statement -


i trying create click event first displays loading icon plus or minus icon. code works on first click when click same icon again doesn't continue if else statement.

here jquery code :

$('a.addqueue').click(function(){      var plusicon = '<i class="fa fa-plus"></i>';     var minusicon = '<i class="fa fa-minus"></i>';     var loadingicon = '<i class="fa fa-circle-o-notch fa-spin"></i>';     var innericon = $(this).html();      $(this).html(loadingicon).delay(500).queue(function(){         if(innericon == plusicon) {             $(this).html(minusicon);         } else if (innericon == minusicon) {             $(this).html(plusicon);         }     });  });  

here html code:

<ul class="list-unstyled"> <li>item 1: <span class="semi-bold">xxxx</span> <a class="addqueue" href="javascript:;"><i class="fa fa-plus"></i></a></li> <li>item 2: <span class="semi-bold">xxxx</span> <a class="addqueue" href="javascript:;"><i class="fa fa-plus"></i></a></li> <li>item 3: <span class="semi-bold">xxxx</span> <a class="addqueue" href="javascript:;"><i class="fa fa-plus"></i></a></li> <li>item 4: <span class="semi-bold">xxxx</span> <a class="addqueue" href="javascript:;"><i class="fa fa-plus"></i></a></li> <li>item 5: <span class="semi-bold">xxxxx</span> <a class="addqueue" href="javascript:;"><i class="fa fa-plus"></i></a></li> </ul> 

what want function when clicked on should first call load icon plus or minus icon depending on inner html. don't know missing , new programming.

here sample on js fidlle: http://jsfiddle.net/vzwv6/

from queue documentation find this:

note when adding function jquery.queue(), should ensure jquery.dequeue() called next function in line executes.

you never dequeueing, next thing in line never execute. result, animation effects (such delay) or other queue calls never execute original queue never dequeued.

$(this).html(loadingicon).delay(500).queue(function(){     if(innericon == plusicon) {         $(this).html(minusicon);     } else if (innericon == minusicon) {         $(this).html(plusicon);     }      $.dequeue(this); }); 

http://jsfiddle.net/vzwv6/7/

in recent version of jquery, there better alternative. can find in queue documenation:

as of jquery 1.4, function that's called passed function first argument. when called, automatically dequeues next item , keeps queue moving.

this lets instead:

$(this).html(loadingicon).delay(500).queue(function(next){     if(innericon == plusicon) {         $(this).html(minusicon);     } else if (innericon == minusicon) {         $(this).html(plusicon);     }      next(); }); 

http://jsfiddle.net/vzwv6/7/


Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -