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); });
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(); });
Comments
Post a Comment