jquery停止滑块在第一个孩子和最后一个孩子

问题描述:

我有一个jQuery滑块,它滑过很好。但是我希望滑块不会向左滑动,如果它已经到达第一个孩子,并且如果它已经到达最后一个孩子,就不会向右滑动jquery停止滑块在第一个孩子和最后一个孩子

我曾尝试在脚本的顶部添加这个,但它似乎并不影响任何东西:

$('.yearslist').find('.li:last-child').stop(true, true); 

我创建了一个jsFiddle或查看我的下面JS:

JS/js.js

$(document).ready (Initialize); 

function Initialize(){ 
    InitList(); 
} 

var moveLeft = false; 
var moveRight = false; 

var left = function() { 
    if (moveLeft) 

     $(".yearslist").animate({ "marginLeft": "-=5px" }, 50, 'linear', left); 
        $('.yearslist').find('li:first-child').stop(true, true); 


}; 

var right = function() { 
    if(moveRight) 

     $(".yearslist").animate({ "marginLeft": "+=5px" }, 50, 'linear', right); 
           $('.yearslist').find('.li:last-child').stop(true, true); 


}; 

function InitList() { 
    $("span#NavigateForward").hover(
     function() { moveLeft=true; left(); }, 
     function() { moveLeft=false; } 
    ); 
    $("span#NavigateBackward").hover(
     function() { moveRight=true; right(); }, 
     function() { moveRight=false; } 
    ); 
} 

你可以这样来做:

if ($('.yearslist').find('li:last-child').offset().left < $('#years').width() - 120) { 
    moveLeft = false; 
} 

if ($('.yearslist').find('li:first-child').offset().left > 86) { 
    moveRight = false; 
} 

看一看这个Fiddle

您必须调整值120和86,才能根据需要进行换行(或创建变量)。 这不是最好的解决方案,但对于你已经完成的工作,我没有看到其他解决方案。 希望它会有所帮助。

+0

谢谢你创造奇迹,不得不略微调整数字,但像魅力一样工作! – 001221