当它到达最后一个div时停止.animate()

时间:2012-05-02 08:44:20

标签: jquery web-applications jquery-mobile jquery-animate

所以我有一个网络应用程序,每个面板为480x300(状态栏为-20px)和两个向左或向右滚动的导航按钮。

现在一切都很好,除非你继续滚动显示的最大面板,它会继续前进。

我想知道是否有可能在它到达最后一个面板后停止Jquery .animate()。

http://jsfiddle.net/gS33Y/

5 个答案:

答案 0 :(得分:1)

Hiya 另一个演示 http://jsfiddle.net/qpHSw/ http://jsfiddle.net/yEsDQ/ http://jsfiddle.net/yEsDQ/show

此示例动态计算你的li in ul并根据。

调整动画

代码

   var cur = 1;
var max = $(".scroll-content ul").children("li").length;

$("nav.back").click(function(){

    if (cur+1 > max) return;
    cur++;

    $("#panel").animate({
        marginLeft: "-=500px",
    }, 1000);

});

$("nav.forward").click(function(){
    if (cur-1 < 1) return;
    cur--; 
    $("#panel").animate({
        marginLeft: "+=500px",
    }, 1000);

});​

答案 1 :(得分:0)

如果是最后一个面板,您可以将x坐标位置限制为某个值。

答案 2 :(得分:0)

您可以使用计数来跟踪当前显示。像这样http://jsfiddle.net/gS33Y/3/

答案 3 :(得分:0)

您可以使用data-x元素上的#panel属性来计算面板数量,并跟踪显示哪个面板以限制移动。此外,您应该将幻灯片边距增加500px(460宽度+ 20px边距+ 20px填充)。

试试这个:

var $panel = $("#panel")
$panel.data("slideCount", $("#panel li").length).data("currentSlide", 1);

$("nav.back").click(function() {
    if ($panel.data("currentSlide") < $panel.data("slideCount")) {
        $("#panel").animate({
            marginLeft: "-=500px",
        }, 1000);
        $panel.data().currentSlide++;
    }
});

$("nav.forward").click(function(){
    if ($panel.data("currentSlide") > 1) {
        $("#panel").animate({
            marginLeft: "+=500px",
        }, 1000);
        $panel.data().currentSlide--;
    }
});

Example fiddle

答案 4 :(得分:0)

无论如何都要检测窗口宽度末端何时接近并在幻灯片5的末尾终止marginLeft,右边没有空白区域?