jquery.accordion延迟打开

时间:2017-01-30 20:38:54

标签: javascript jquery jquery-ui accordion

我的网站上有一个工作的jquery手风琴,它弹出网站内容并推送内容,显示联系表格。触发器是顶部栏内的菜单项。我希望我的topbar变得粘稠,所以现在我需要页面在手风琴打开之前滚动到顶部。当前单击按钮时,它会滚动到顶部并同时打开手风琴,因此表单被隐藏,您必须手动向上滚动以在执行scrollTop后查看表单。如何在执行scrollTop之前阻止手风琴打开,同时确保如果页面已经接近或在顶部,手风琴开放没有延迟(因此setTimeout将没有用)。到目前为止,这是我的代码:

function initContactAccn() {
$("#toggle-o").on("click", function(event) {
    $("[data-accordion] [data-control]").click();
});

};
initContactAccn();

function jqueryAccordion() {
$('#contact-accordion').accordion({
    "transitionSpeed": 500,
    collapsible: true,
    heightStyle: "content",
    beforeActivate: function(event, ui) {
        $("html, body").animate({ scrollTop: 0 - 422 }, "fast");
        return false;
    }
});
};
jqueryAccordion();

我希望这是有道理的。非常感谢任何见解。顺便说一句,422是手风琴的高度。

1 个答案:

答案 0 :(得分:0)

先制作动画,然后在动画完成时调用手风琴:

function initContactAccn() {
  $("#toggle-o").on("click", function(event) {
    $("[data-accordion] [data-control]").click();
  });

};
initContactAccn();

function jqueryAccordion() {
  $("html, body").animate({ scrollTop: 0 - 422 }, "fast", function() {
    $('#contact-accordion').accordion({
      "transitionSpeed": 500,
      collapsible: true,
      heightStyle: "content"
    });
  });
};
jqueryAccordion();

$ .animate接受一个可选的第三个参数,它是动画结束后要执行的回调函数。