jquery - stop this slider from looping -


i have code , want prevent looping example has slide 1 slide 2 slide three, must not able go slide 3 slide 1 , slide 1 slide three. here jquery code

jquery(document).ready(function ($) {  $('#checkbox').change(function(){ setinterval(function () {     moveright(); }, 3000); });  var slidecount = $('#slider ul li').length; var slidewidth = $('#slider ul li').width(); var slideheight = $('#slider ul li').height(); var sliderulwidth = slidecount * slidewidth;  $('#slider').css({ width: slidewidth, height: slideheight });  $('#slider ul').css({ width: sliderulwidth, marginleft: - slidewidth });  $('#slider ul li:last-child').prependto('#slider ul');  function moveleft() {     $('#slider ul').animate({         left: + slidewidth     }, 200, function () {         $('#slider ul li:last-child').prependto('#slider ul');         $('#slider ul').css('left', '');     }); };  function moveright() {     $('#slider ul').animate({         left: - slidewidth     }, 200, function () {         $('#slider ul li:first-child').appendto('#slider ul');         $('#slider ul').css('left', '');     }); };  $('a.control_prev').click(function () {     moveleft(); });  $('a.control_next').click(function () {     moveright(); });  });     

thank you.

that because of no restrictions on prependto , appendto functions. comment them out.

introduced variable keep track of slide on, , vary 1 no. of slides.

jquery(document).ready(function ($) {    $('#checkbox').change(function(){  setinterval(function () {      moveright();  }, 3000);  });    var slidecount = $('#slider ul li').length;    var current = 1;  var slidewidth = $('#slider ul li').width();  var slideheight = $('#slider ul li').height();  var sliderulwidth = slidecount * slidewidth;    $('#slider').css({ width: slidewidth, height: slideheight });    $('#slider ul').css({ width: sliderulwidth, marginleft: - slidewidth });    $('#slider ul li:last-child').prependto('#slider ul');    function moveleft() {      $('#slider ul').animate({          left: + slidewidth      }, 200, function () {          $('#slider ul li:last-child').prependto('#slider ul');          $('#slider ul').css('left', '');      });  };    function moveright() {      $('#slider ul').animate({          left: - slidewidth      }, 200, function () {          $('#slider ul li:first-child').appendto('#slider ul');          $('#slider ul').css('left', '');      });  };    $('a.control_prev').click(function () {    if(current>1){      current--;      moveleft();  }  });    $('a.control_next').click(function () {    if(current<slidecount){      current++;      moveright();    }  });    $(".slidebuttons").click(function(){     var clickedslide =  $('.slidebuttons').index(this)+1;     $(".slidebuttons").removeclass('active');     $(this).addclass('active');     if (current>clickedslide){       var diff = current-clickedslide;       for(var l=0;l<diff;l++){         current--;         moveleft();       }     }     if (current<clickedslide){       var diff = clickedslide-current;       $(".slidebuttons").removeclass('active');       $(this).addclass('active');       for(var l=0;l<diff;l++){         current++;         moveright();       }     }  });  });
html {    border-top: 5px solid #fff;    background: #58ddaf;    color: #2a2a2a;  }    html, body {    margin: 0;    padding: 0;    font-family: 'open sans';  }    h1 {    color: #fff;    text-align: center;    font-weight: 300;  }    #slider {    position: relative;    overflow: hidden;    margin: 20px auto 0 auto;    border-radius: 4px;  }    #slider ul {    position: relative;    margin: 0;    padding: 0;    height: 200px;    list-style: none;  }    #slider ul li {    position: relative;    display: block;    float: left;    margin: 0;    padding: 0;    width: 500px;    height: 300px;    background: #ccc;    text-align: center;    line-height: 300px;  }    a.control_prev, a.control_next {    position: absolute;    top: 40%;    z-index: 999;    display: block;    padding: 4% 3%;    width: auto;    height: auto;    background: #2a2a2a;    color: #fff;    text-decoration: none;    font-weight: 600;    font-size: 18px;    opacity: 0.8;    cursor: pointer;  }    a.control_prev:hover, a.control_next:hover {    opacity: 1;    -webkit-transition: 0.2s ease;  }    a.control_prev {    border-radius: 0 2px 2px 0;  }    a.control_next {    right: 0;    border-radius: 2px 0 0 2px;  }    .slider_option {    position: relative;    margin: 10px auto;    width: 160px;    font-size: 18px;  }  .slidebuttons.active{    background-color:green;  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>  <h1>incredibly basic slider</h1>  <button class="slidebuttons active">slide 1</button>  <button class="slidebuttons">slide 2</button>  <button class="slidebuttons">slide 3</button>  <button class="slidebuttons">slide 4</button>  <div id="slider">    <a href="#" class="control_next">></a>    <a href="#" class="control_prev"><</a>    <ul>      <li>slide 1</li>      <li style="background: #aaa;">slide 2</li>      <li>slide 3</li>      <li style="background: #aaa;">slide 4</li>    </ul>    </div>    <div class="slider_option">    <input type="checkbox" id="checkbox">    <label for="checkbox">autoplay slider</label>  </div>


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -