Rob
Rob

Reputation: 1495

Select state on first pagination

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

Answers (1)

Kiran
Kiran

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');
    });

DEMO FIDDLE

Upvotes: 2

Related Questions