I will be an easy one for JavaScripters. I had a long research but I couldn't find the right answer. I want a menu (basically just anchors and not list elements) to be highlighted like a slider with specific time delay.
Also, it would be nice if you know how to get rid all of these useless ids around using $("#menu a") and $(this). Since I cannot do much JavaScript (although I prefer the simplicity), here is my crappy code in jQuery that works, but it's not looping.
$("#anchor1").addClass("highlight");
function loopMenu() {
window.clearTimeout();
setTimeout(function(){$("#anchor1").removeClass("highlight");}, 4000);
setTimeout(function(){$("#anchor2").addClass("highlight");}, 4000);
setTimeout(function(){$("#anchor2").removeClass("highlight");}, 8000);
setTimeout(function(){$("#anchor3").addClass("highlight");}, 8000);
setTimeout(function(){$("#anchor3").removeClass("highlight");}, 12000);
setTimeout(function(){$("#anchor4").addClass("highlight");}, 12000);
setTimeout(function(){$("#anchor4").removeClass("highlight");}, 16000);
setTimeout(function(){$("#anchor1").addClass("highlight");}, 12000);
}
loopMenu();
What I want: a script that removes Class from current element and addClass to the next anchor type element every 4 seconds and then jump to the first element and repeat it forever.
Here is a solved question that has a few relations to this, although I can't make it work either.
something like:
$(function () {
var $anchors = $('.anchor');
(function _loop(idx) {
$anchors.removeClass('highlight').eq(idx).addClass('highlight');
setTimeout(function () {
_loop((idx + 1) % $anchors.length);
}, 4000);
}(0));
});
with:
<a class="anchor">A</a>
<a class="anchor">B</a>
<a class="anchor">C</a>
<a class="anchor">D</a>
<a class="anchor">E</a>
<a class="anchor">F</a>
<a class="anchor">G</a>
http://jsbin.com/oselux/1/
I would just go this way:
JS
var $anchors = $('a.anchor'), counter = 0;
setInterval(function(){
$anchors.removeClass('highlight');
$anchors.eq(counter++ % $anchors.length).addClass('highlight');
}, 4000);
Markup
<ul>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
<li><a href="#" class="anchor">I am an anchor</a></li>
</ul>
Fiddle.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With