2013-07-13 59 views
-1

這裏的源代碼:我如何製作一個jQuery無限旋轉木馬..有限?

/** 
* @author Stéphane Roucheray 
* @extends jquery 
*/ 


jQuery.fn.carousel = function(previous, next, options){ 
    var sliderList = jQuery(this).children()[0]; 

    if (sliderList) { 
     var increment = jQuery(sliderList).children().outerWidth("true"), 
     elmnts = jQuery(sliderList).children(), 
     numElmts = elmnts.length, 
     sizeFirstElmnt = increment, 
     shownInViewport = Math.round(jQuery(this).width()/sizeFirstElmnt), 
     firstElementOnViewPort = 1, 
     isAnimating = false; 

     for (i = 0; i < shownInViewport; i++) { 
      jQuery(sliderList).css('width',(numElmts+shownInViewport)*increment + increment + "px"); 
      jQuery(sliderList).append(jQuery(elmnts[i]).clone()); 
     } 

     jQuery(previous).click(function(event){ 
      if (!isAnimating) { 
       if (firstElementOnViewPort == 1) { 
        jQuery(sliderList).css('left', "-" + numElmts * sizeFirstElmnt + "px"); 
        firstElementOnViewPort = numElmts; 
       } 
       else { 
        firstElementOnViewPort--; 
       } 

       jQuery(sliderList).animate({ 
        left: "+=" + increment, 
        y: 0, 
        queue: true 
       }, "swing", function(){isAnimating = false;}); 
       isAnimating = true; 
      } 

     }); 

     jQuery(next).click(function(event){ 
      if (!isAnimating) { 
       if (firstElementOnViewPort > numElmts) { 
        firstElementOnViewPort = 2; 
        jQuery(sliderList).css('left', "0px"); 
       } 
       else { 
        firstElementOnViewPort++; 
       } 
       jQuery(sliderList).animate({ 
        left: "-=" + increment, 
        y: 0, 
        queue: true 
       }, "swing", function(){isAnimating = false;}); 
       isAnimating = true; 
      } 
     }); 
    } 
}; 

有人能指出我如何使它有限的一個正確的方向?例如,你有4個塊,當你滾動到最後一個時 - 下一個按鈕停止工作只有前一個。

+0

轉盤旋轉永遠。聽起來像你不想旋轉木馬... –

+0

是的,我知道,但它幾乎是我想要的,但不是無限循環。 – Heihachi

回答

1

好像你只需要考慮刪除:

jQuery(sliderList).append(jQuery(elmnts[i]).clone()); 

這是需要的元素,並把它放入隊列的末尾行。

爲了防止點擊next/previous的效果,你可以用這個 「黑客」:

// Save 'snownInViewport' value right before "for" cycle 
sliderList.data("shownInViewport", shownInViewport); 
for (i = 0; i < shownInViewport; i++) { 

previous單擊處理:

if (firstElementOnViewPort == 1) { 
    return; 
    //jQuery(sliderList).css('left', "-" + numElmts * sizeFirstElmnt + "px"); 
    //firstElementOnViewPort = numElmts; 
} 

next單擊處理:

if (firstElementOnViewPort + sliderList.data("shownInViewport") > numElmts) { 
    return; 
    //firstElementOnViewPort = 2; 
    //jQuery(sliderList).css('left', "0px"); 
} 
+0

感謝它禁用無限循環,但是,如果我有4個塊,並且您將超出第4個塊,它將進一步滑動空塊,直到第4個塊完全消失,請在此處查看:http:// dima。 webcoder.kz/probnyi-material-0如何使下一個或上一個按鈕不可點擊或類似的東西,當你在最後一個塊? – Heihachi

+0

請嘗試更新的答案。 – mishik

+0

仍然滾動進一步 – Heihachi