javascript - 添加幻灯片回调以动画 Jquery

标签 javascript jquery html animation

我有以下 html

<ul>
    <li>aaa</li>
    <li>bbb</li>
    <li>ccc</li>
</ul>
<div id="vis"></div>
<style>li {position: relative;}</style>

单击时,我想将单击的项目向左移动 50px,然后向上滑动,然后输出现在在我的 div 中可见的列表项数量,其 id 为 vis。

如果我执行下面的操作,它会计数为 1 比多,因为当我添加长度 see fiddle 时动画尚未完成。 .

<script>
    $("li").on("click", function () {
        $(this).animate({
            "left": "+=50px"
        }).slideUp(300);

        var visNum = $('li:visible').length;    
        $('#vis').text(visNum);
    });
</script>

如果我只是执行 hide() 操作,我会在 vis div 中得到预期的输出,但不会得到我需要的动画。 See Fiddle

<script>
    $("li").on("click", function () {
        $(this).hide();

        var visNum = $('li:visible').length;    
        $('#vis').text(visNum);
    });
</script>

如果我尝试回调,我会得到与第一次尝试类似的结果。 See Fiddle

<script>
    $("li").on("click", function () {           
        $(this).animate({
                left: "+=50px",
        }, 300, function() {
            $(this).slideUp(300);
            var visNum = $('li:visible').length;    
            $('#vis').text(visNum);
        });
    });
</script>

执行此操作的最佳方法是什么,以便在单击某个项目后,它会向左移动,向上滑动,然后输出剩余的可见列表项目?

最佳答案

slideUp 有一个complete() 回调。 http://api.jquery.com/slideup/

<script>
$("li").on("click", function () {
    $(this).animate({
        "left": "+=50px"
    }).slideUp(300, function(){
        var visNum = $('li:visible').length;    
        $('#vis').text(visNum);
    });
});
</script>

为了完成... http://jsfiddle.net/fjqmj/4/

关于javascript - 添加幻灯片回调以动画 Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802344/

相关文章:

javascript - jQuery:将 <span> 包裹在子字符串周围......关闭,但不完全

javascript - 单击后添加带有输入字段的子项,如树

javascript - 从外部来源覆盖 td 标签样式

javascript - 在 dc.js 中放大文本标签

javascript - Array(n) 和 Array(n).fill 之间的区别?

javascript - Bing map pin 的拖尾已成功调用,但 Bing map 移动事件仍在继续

javascript - 选择另一个单选按钮时如何取消选择单选按钮?

javascript - 在从 MysQL 数据库填充的 textarea 字段中嵌入 <br> 标签?

javascript - 如何根据 iframe 大小调整引导模式的大小?

javascript - Titanium 应用程序和远程 webview 之间的通信