Reputation: 1495
I'm trying to make a carousel display a select state on the first displayed slide in a carousel.
JSFiddle
DEMO
HTML
<div id='mySwipe' style='max-width:500px;margin:0 auto' class='swipe'>
<div class='swipe-wrap'>
<div><b>0</b></div>
<div><b>1</b></div>
<div><b>2</b></div>
<div><b>3</b></div>
<div><b>4</b></div>
<div><b>5</b></div>
</div>
</div>
<nav>
<ul id="nav">
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</nav>
<div style='text-align:center;padding-top:20px;'>
<button id ="mySwipePrev">prev</button>
<button id ="mySwipeNext">next</button>
</div>
Upvotes: 2
Views: 281
Reputation: 20313
You can add selected
class to first li
element using:
$("#nav li").eq(0).addClass("selected");
And then I modified code in callback
function to select based on index
instead of index-1
:
$Elements.eq(index).addClass("selected");
And then I modified code in case of prev
and next
button click events to select based on mySwipe.getPos()
instead of mySwipe.getPos()-1
:
$('#mySwipePrev').on('click', function () {
mySwipe.prev();
$navLi.removeClass('selected');
$navLi.eq(mySwipe.getPos()).addClass('selected');
});
$('#mySwipeNext').on('click', function () {
mySwipe.next();
$navLi.removeClass('selected');
$navLi.eq(mySwipe.getPos()).addClass('selected');
});
and on click of navigation li elements (0,1,2,3,4..), use $(this).index()
instead of $(this).index()+1
(which will add +1 to index)
$navLi.on ('click', function () {
window.mySwipe.slide($(this).index(), 200);
$(this).siblings().removeClass('selected');
$(this).addClass('selected');
});
Upvotes: 2