在Jquery中设置.animate的边界

在Jquery中设置.animate的边界,jquery,css,jquery-animate,params,Jquery,Css,Jquery Animate,Params,我在Jquery中有一个基本的滑块,由一个左箭头和一个右箭头div组成,它们都控制我的屏幕div的“左”值,其中包含一个长.png。每个屏幕的宽度为543倍 $pr('#arrow_left').click(function () { $pr('#screens').animate ({"left": "+=543px"}, "fast"); }); $pr('#arrow_right').click(function () { $pr('#screens').animate

我在Jquery中有一个基本的滑块,由一个左箭头和一个右箭头div组成,它们都控制我的屏幕div的“左”值,其中包含一个长.png。每个屏幕的宽度为543倍

$pr('#arrow_left').click(function () {
    $pr('#screens').animate ({"left": "+=543px"}, "fast"); 
});
$pr('#arrow_right').click(function () {
    $pr('#screens').animate ({"left": "-=543px"}, "fast");
});
幻灯片动作效果很好,但我想为#屏幕“左”值设置最小值和最大值,这样箭头就不会将用户带到图像以外的任何方向。

var max=543*10//例如,10张幻灯片
var max = 543 * 10; //10 slides, for example
var current = 0;
$pr('#arrow_left').click(function () {
    if(current < 0)
    {
        current += 543;
        $pr('#screens').animate ({"left": current + "px"}, "fast"); });

    }
});

$pr('#arrow_right').click(function () {
    if(current > max)
    {
        current -= 543;
        $pr('#screens').animate ({"left": current + "px"}, "fast");

    }
});
无功电流=0; $pr(“#箭头左”)。单击(函数(){ 如果(电流<0) { 电流+=543; $pr('#screens')。动画({“left”:current+“px”},“fast”);}); } }); $pr(“#箭头_右”)。单击(函数(){ 如果(当前>最大值) { 电流-=543; $pr('#screens')。动画({“left”:current+“px”},“fast”); } });
Kai Qing的答案非常棒:)我根据自己的需要对其进行了修改,并为max变量添加了jQuery,因此它将根据滑块的直接子对象数量进行更改,因此设置后您无需编辑:)

如果有人需要,我就把代码片段留在这里:p

$(document).ready(function(){
var max = 275 * $('.slider-wrap > div').length; //change div to whatever element wraps each individual piece of content you're sliding.
var current = 0;
$('.left').click(function () {
if(current < max){
    alert(current);
    current += 275;
    $(".slider-wrap").animate({marginLeft:current + 'px'},'slow'); 
    }
});
$('.right').click(function () {
if(current > 0){
    alert(current);
    current -= 275;
    $(".slider-wrap").animate({marginLeft:current + 'px'},'slow'); 
    }
});
$(文档).ready(函数(){
var max=275*$('.slider wrap>div').length;//将div更改为任何元素包装正在滑动的每个内容片段。
无功电流=0;
$('.left')。单击(函数(){
如果(电流<最大值){
警报(当前);
电流+=275;
$(“.slider wrap”).animate({marginLeft:current+'px'},'slow');
}
});
$('.right')。单击(函数(){
如果(当前>0){
警报(当前);
电流-=275;
$(“.slider wrap”).animate({marginLeft:current+'px'},'slow');
}
});

}))

screens div是否包含在带有overflow:hidden的固定宽度div中?此解决方案还解决了每次单击left时绑定一个新的“right”click事件的问题,这可能会导致一些意外行为。var max应该表示总幻灯片,如果将其写入dom,则可以通过jQuery轻松收集这些幻灯片。