treehouse : what would you like to learn today?
Web Design Web Development iOS Development

Start and Stop for jQuery slider

  • I am taking over an existing project for a client and there is one section on the page I need help with. You can view the test page at http://rjmccollam.com/test. I need to stop the slider from looping. The client wants it to stop to force the user to go backward instead of each app looping. I assume it is a matter of changing a value, but have played with it and couldn't get it to stop. Thank you for your help.

    Here is the script in the head section:
      <script type='text/javascript' src='js/jcarousellite_1.0.1.min.js'></script>
    <script type=\"text/javascript\">
    $(function() {
    $(\".slider\").jCarouselLite({
    btnNext: \".next\",
    btnPrev: \".prev\",
    visible: 4
    });
    });
    $(function () {
    var tabContainers = $('div.slideContent > div');
    tabContainers.hide().filter(':first').show();
    $('div.tabs ul.tabNavigation a').click(function () {
    tabContainers.hide();
    tabContainers.filter(this.hash).show();
    $('div.tabs ul.tabNavigation a').removeClass('selected');
    $(this).addClass('selected');
    return false;
    }).filter(':first').click();
    });
    </script>


    Here is the script in the js file:
    (function($){$.fn.jCarouselLite=function(o){o=$.extend({btnPrev:null,btnNext:null,btnGo:null,mouseWheel:false,auto:null,speed:200,easing:null,vertical:false,circular:true,visible:3,start:0,scroll:1,beforeStart:null,afterEnd:null},o||{});return this.each(function(){var b=false,animCss=o.vertical?\"top\":\"left\",sizeCss=o.vertical?\"height\":\"width\";var c=$(this),ul=$(\"ul\",c),tLi=$(\"li\",ul),tl=tLi.size(),v=o.visible;if(o.circular){ul.prepend(tLi.slice(tl-v-1+1).clone()).append(tLi.slice(0,v).clone());o.start+=v}var f=$(\"li\",ul),itemLength=f.size(),curr=o.start;c.css(\"visibility\",\"visible\");f.css({overflow:\"hidden\",float:o.vertical?\"none\":\"left\"});ul.css({margin:\"0\",padding:\"0\",position:\"relative\",\"list-style-type\":\"none\",\"z-index\":\"1\"});c.css({overflow:\"hidden\",position:\"relative\",\"z-index\":\"2\",left:\"0px\"});var g=o.vertical?height(f):width(f);var h=g*itemLength;var j=g*v;f.css({width:f.width(),height:f.height()});ul.css(sizeCss,h+\"px\").css(animCss,-(curr*g));c.css(sizeCss,j+\"px\");if(o.btnPrev)$(o.btnPrev).click(function(){return go(curr-o.scroll)});if(o.btnNext)$(o.btnNext).click(function(){return go(curr+o.scroll)});if(o.btnGo)$.each(o.btnGo,function(i,a){$(a).click(function(){return go(o.circular?o.visible+i:i)})});if(o.mouseWheel&&c.mousewheel)c.mousewheel(function(e,d){return d>0?go(curr-o.scroll):go(curr+o.scroll)});if(o.auto)setInterval(function(){go(curr+o.scroll)},o.auto+o.speed);function vis(){return f.slice(curr).slice(0,v)};function go(a){if(!b){if(o.beforeStart)o.beforeStart.call(this,vis());if(o.circular){if(a<=o.start-v-1){ul.css(animCss,-((itemLength-(v*2))*g)+\"px\");curr=a==o.start-v-1?itemLength-(v*2)-1:itemLength-(v*2)-o.scroll}else if(a>=itemLength-v+1){ul.css(animCss,-((v)*g)+\"px\");curr=a==itemLength-v+1?v+1:v+o.scroll}else curr=a}else{if(a<0||a>itemLength-v)return;else curr=a}b=true;ul.animate(animCss==\"left\"?{left:-(curr*g)}:{top:-(curr*g)},o.speed,o.easing,function(){if(o.afterEnd)o.afterEnd.call(this,vis());b=false});if(!o.circular){$(o.btnPrev+\",\"+o.btnNext).removeClass(\"disabled\");$((curr-o.scroll<0&&o.btnPrev)||(curr+o.scroll>itemLength-v&&o.btnNext)||[]).addClass(\"disabled\")}}return false}})};function css(a,b){return parseInt($.css(a[0],b))||0};function width(a){return a[0].offsetWidth+css(a,'marginLeft')+css(a,'marginRight')};function height(a){return a[0].offsetHeight+css(a,'marginTop')+css(a,'marginBottom')}})(jQuery);
  • As always with plugins it pays to read the documentation http://www.ajaxupdates.com/jcarousellite-plugin-for-jquery/
    Just add "circular: false" to your script :
        $(function() {
    $(\".slider\").jCarouselLite({
    btnNext: \".next\",
    btnPrev: \".prev\",
    visible: 4,
    circular: false
    });
    });
  • Yea that really would have helped. Thank you for still posting the fix though I really appreciate your help.