javascript - Jquery隐藏/显示滚动动画

标签 javascript jquery html css ajax

当我单击任何年份列(2012、2011、2010 等)时,它会显示每年的内容并隐藏其他年份。

问题是,当我点击(例如2011专栏)时,动画同时执行所有效果,让用户感到困惑,我想我必须用动画步骤来做到这一点,但我一直无法做到来一个jquery解决方案。

这是我的代码:

/* Scroll Function */
function scrollto(position){
    $('html, body').stop().animate({
        scrollLeft: position
    }, 1000);
}

/* Calendar Scroll */
$(".sub_section_title").click( function(e) {
    e.preventDefault();
    $(".contenido_calendario").hide();
    $(this).next(".contenido_calendario").toggle('slow');
    scrollto($(this).offset().left - 352)
});

我尝试使用 .queue() 修复效果,但它不起作用,我不知道代码是否写得很好:

$(".sub_section_title").click( function(e) {
    e.preventDefault();
    $(".contenido_calendario").hide();
    $(".contenido_calendario").queue(function() {
        scrollto($(this).offset().left - 352);
        $(this).dequeue();
    });
    $(".contenido_calendario").queue(function() {
        $(this).next(".contenido_calendario").toggle('slow')
    $(this).dequeue();
    });
});

动画应该是: 点击2011>向左滚动2011栏(隐藏2012内容)>显示内容动画

最佳答案

您想要利用 jQuery 动画的回调功能。所以对于hide ,例如,您可以这样做:

var outerContainer = $(this);
$(".contenido_calendario").hide(500, function() {
    outerContainer.next(".contenido_calendario").toggle('slow', function() {
        scrollto(outerContainer.offset().left - 352);
    });
});

这将确保动画在前一个动画完成时运行。

关于javascript - Jquery隐藏/显示滚动动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12956151/

相关文章:

javascript - 添加提交按钮到 jquery 星级评定

javascript - 从父标签中获取孤立文本,并分 ionic 元素

html - Bootstrap 使用 data-toggle=buttons 禁用 radio btn-group

javascript - 从 createjs 阶段删除一个子进程

javascript - Rails 如何 Gzip Javascript? (英雄)

javascript - 将鼠标悬停或悬停在 YouTube 嵌入式播放器上

javascript - 如何点击 Chrome 扩展程序中的按钮

javascript - IE 8 Jquery 焦点问题父 div 内的子项

javascript - 解析 Javascript 日期

javascript - 删除记录时的 EmberJS 事件