javascript - jquery .slideUp 多次调用时表现奇怪

标签 javascript jquery html animation jquery-animate

编辑:如果我的标签被关闭会有帮助...没有改进唉。

我想要构建的内容相对简单。类似老虎机的界面,带有“滚动”图像,最终会减慢速度并停止。我使用 jQuery 的 .slideUp() 函数来执行此操作,并且在应用于单个面板时效果很好。但当应用于第二个或第三个时,动画开始表现得很奇怪。

试试这个演示看看我的意思:http://bit.ly/wtiq36

有人知道这是怎么回事吗?我用来模拟动画的技术非常简单,我只是将所有图像堆叠到另一个上,然后将最高的 z-index 交换为最低的 z-index-1,将其放回堆栈的末尾一次SlideUp() 已完成。

(附:我知道这个无限循环,那部分还没有完成:))

这是重要的代码(html 和 js),或者只需检查该链接上的源代码即可了解所有内容。

HTML

<div class="panel one">
        <ul>
            <li class="item" style="z-index:1"><img src="images/img1.jpg" /></li>
            <li class="item" style="z-index:2"><img src="images/img2.jpg" /></li>
            <li class="item" style="z-index:3"><img src="images/img3.jpg" /></li>
        </ul>
    </div>

    <div class="panel two">
        <ul>
            <li class="item" style="z-index:1"><img src="images/img1.jpg" /></li>
            <li class="item" style="z-index:2"><img src="images/img2.jpg" /></li>
            <li class="item" style="z-index:3"><img src="images/img3.jpg" /></li>
        </ul>
    </div>

    <div class="panel three">
        <ul>
            <li class="item" style="z-index:1"><img src="images/img1.jpg" /></li>
            <li class="item" style="z-index:2"><img src="images/img2.jpg" /></li>
            <li class="item" style="z-index:3"><img src="images/img3.jpg" /></li>
        </ul>
    </div>

还有JS

function testit(n){
    $(".panel."+n).each(function() {
        secondclass = $(this).attr('class').split(' ')[1]
        div = ("."+secondclass+" ul li")
        if(secondclass != "stats"){
            flip(div)
        }
    })
}
function flip(div){
    highest = gethighZ(div)[1]
    highest.slideUp(400,'linear',function(){
        lowestZ = getlowZ(div)[0]
        highest.css("z-index",lowestZ-1)
        highest.show()
        flip(div)
    })
}


//these 2 functions just return highest/lowest zindex divs
function gethighZ(div){
    var index = -999999999999
    var result = Array()
    $(div).each(function() {
        var current = parseInt($(this).css("zIndex"), 10)
        if(current > index) {
            result[0] = current
            result[1] = $(this)
            index = current
        }

    });
    return result
}

function getlowZ(div){
    var index = 99999999999999
    var result = Array()
    $(div).each(function() {
        var current = parseInt($(this).css("zIndex"), 10)
        if(current < index) {
            result[0] = current
            result[1] = $(this)
            index = current
        }

    });
    return result
}

最佳答案

尝试停止之前的所有动画:

highest.stop().slideUp(400,'linear',function(){
    lowestZ = getlowZ(div)[0]
    highest.css("z-index",lowestZ-1)
    highest.show()
    flip(div)
})

关于javascript - jquery .slideUp 多次调用时表现奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8909657/

相关文章:

javascript - d3 fitSize 给出 NaN 值

javascript - 拍卖类型倒计时

php - 在 IE 8 中遇到问题对象需要错误,灯箱在 IE 8 和 IE 7 中不起作用

html - 制作类似于 Windows 资源管理器的下拉树形菜单

javascript - 解析 ISO 8601 日期字符串时如何假定本地时区?

javascript - 增量 CSS3 淡入

jquery - Knockoutjs 绑定(bind)鼠标悬停或 Jquery

php - 关闭弹窗并刷新父页面

javascript - 使用 JavaScript 更改 div 的内容

javascript - 如何使用 CSS 编辑输入类型数据