2017-01-30 6 views
0

내 사이트에 jquery 아코디언이 작동하여 사이트 콘텐츠 위에 팝업되어 콘텐츠를 아래로 밀면 연락처 양식이 표시됩니다. 트리거는 상단 바 내부의 메뉴 항목입니다. 내 윗면 막대가 끈적하기를 바래서 아코디언이 열리기 전에 맨 위로 스크롤 할 페이지가 필요합니다. 현재 버튼을 클릭하면 맨 위로 스크롤되어 아코디언이 동시에 열리므로 양식이 숨겨져 있으며 scrollTop을 수행 한 후 양식을 보려면 수동으로 스크롤해야합니다. scrollTop이 수행 될 때까지 아코디언이 열리지 않게하려면 어떻게해야합니까? 페이지가 이미 가까이 있거나 맨 위에 있으면 아코디언 열기에 지연이 없습니다 (그래서 setTimeout은 유용하지 않습니다). 지금까지 내 코드는 다음과 같습니다.jquery.accordion 지연 열기

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(); 

희망적입니다. 어떤 통찰력이라도 고맙습니다. Btw, 422는 아코디언의 높이입니다.

답변

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 애니메이션이 완료되면 실행할 콜백 함수의 선택 사양 인 세 번째 매개 변수를 받아들입니다.

+0

scrollTop이 닫 혔을 때 대기하지 않는 것과 관련하여 아코디언에 대한 시간 초과를 설정 한 다음 $ ("body"). scrollTop() 값과 원하는 값 사이의 차이를 계산하여 시간 초과 기간을 . – thegunmaster

+0

불행히도 올바른 방향으로 움직이는 동일한 행동 ... 감사합니다. – pjldesign