Reputation: 167
i have a navigator. when the document is ready i set a class to next child of visited. after that when i click on next button , i want to remove the class that called notvisityet from the current li and add it to next child. moreover i want to add the class visited to li of that child. i wrote that below but it does not work correctly.
here is my snippet :
$(document).ready(function(e) {
$(".visited").next().children('em').addClass('notvisityet');
});
$('#next').click(function(){
$(".visited").next().addClass('visited');
$(".visited").next().children('em').removeClass('notvisityet');
});
.visited{ color:red}
.notvisityet{ color:blue;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ol>
<li class="visited">one</li>
<li><em>two</em></li>
<li><em>tree</em></li>
<li><em>four</em></li>
</ol>
<div id="next"> next</div>
Upvotes: 0
Views: 93
Reputation: 4368
I made some changes to your code. Hope it helps:
$(document).ready(function(e) {
$(".visited").next().addClass('notvisityet');
$('#next').click(function() {
$(".visited:last").next().removeClass('notvisityet');
$(".visited:last").next().addClass('visited').next().addClass("notvisityet");
});
});
.visited{ color:red}
.notvisityet{ color:blue;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ol>
<li class="visited">one</li>
<li><em>two</em></li>
<li><em>tree</em></li>
<li><em>four</em></li>
</ol>
<div id="next"> next</div>
Upvotes: 2
Reputation: 113
Please check below mentioned demo in jsfiddle
changed your code like this
$(document).ready(function(e) {
$(".visited").next().children('em').addClass('notvisityet');
});
$('#next').click(function(){
$(".visited").next().addClass('visited');
if(!$('ol li:last-child').prev().hasClass('visited')){
$(".visited").children('em').removeClass('notvisityet');
$(".visited").nextAll().eq(1) .children('em').addClass('notvisityet');
}
else if($('ol li:last-child').hasClass('visited')){
$('ol li:last-child').children('em').removeClass('notvisityet');
}
else{
$(".visited").children('em').removeClass('notvisityet');
$('ol li:last-child').children('em').addClass('notvisityet');
}
});
Upvotes: 0
Reputation: 4461
Try this:
$('#next').click(function(){
if($('#id1').hasClass('visited')==true){
$("#id1").removeClass("visited");
$('#id2').addClass("visited");
}else if($('#id2').hasClass('visited')==true){
$("#id2").removeClass("visited");
$('#id3').addClass("visited");
}else if($('#id3').hasClass('visited')==true){
$("#id3").removeClass("visited");
$('#id4').addClass("visited");
}else if($('#id4').hasClass('visited')==true){
$("#id4").removeClass("visited");
$('#id1').addClass("visited");
}
});
<ol>
<li><em id="id1">one</li>
<li><em id="id2">two</em></li>
<li><em id="id3">tree</em></li>
<li><em id="id4">four</em></li>
</ol>
Upvotes: 0
Reputation: 1660
You need change minor code in script:
$(document).ready(function(e) {
$(".visited").next().children('em').addClass('notvisityet');
});
$('#next').click(function(){
$(".visited").next().addClass('visited').prev().removeClass('visited');
$(".visited").children().removeClass('notvisityet');
$(".visited").next().children().addClass('notvisityet');
});
.visited{ color:red}
.notvisityet{ color:blue;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ol>
<li class="visited">one</li>
<li><em>two</em></li>
<li><em>tree</em></li>
<li><em>four</em></li>
</ol>
<div id="next"> next</div>
You can also check this Fiddle
Upvotes: 0
Reputation: 2046
with the question u have asked, i have made the necessary modifications. Hope the below code helps
$('#next').click(function(){
elem=$(".visited")
elem.next().addClass('visited');
elem.removeClass('visited');
elem.next().children('em').removeClass('notvisityet');
elem.next().next().children('em').addClass('notvisityet');
});
Upvotes: 0