나는 매우 잘 작동하고 (브라우저 간 테스트를 거치지 않은) 아코디언 스크립트를 조합하여 각 서랍 내부의 많은 콘텐츠를 액세스하고 화면에서 볼 수 있습니다. 많은 시간에 아코디언이 열리고 여는 후 포지셔닝에 문제가 발생합니다. 어쨌든, 내가 사용하고있는 코드는 토글 액티브 함수와 스크롤 기능이 클릭시 호출됩니다.아코디언 기능
function toggleActive(link){ // Set anchor to active
if ($(link).hasClass("active")) {
$(link).removeClass("active");
} else {
$(link).addClass("active");
};
};
function scrollToElement(selector, time, verticalOffset) { // param 1 = id, param 2 = speed
time = typeof(time) != 'undefined' ? time : 1000;
verticalOffset = typeof(verticalOffset) != 'undefined' ? verticalOffset : 0;
element = $(selector);
offset = element.offset();
offsetTop = offset.top + verticalOffset;
$('html, body').animate({scrollTop: offsetTop }, time);
}
$('#accordion a').click(function(e) {
var link = '#' + event.target.id
$(".tab-content").slideUp();
$(".tab").removeClass("active");
toggleActive(link);
$(link).next().slideToggle("fast");
setTimeout(function() {
scrollToElement($(link), 500);
}, 500);
e.preventDefault();
});
이렇게하면 모든 탭이 닫히고 비활성 상태가 된 다음 대상 "서랍"이 열리고 활성화됩니다. 어떤 이유로 든 "활성"서랍을 클릭하면 스크립트를 다시 실행합니다. 내가하고 싶은 것은 방금 클릭 한 내용이 이미 열려 있는지 확인한 후 그 서랍을 닫는 IF 문을 배치하는 것입니다. 미리 감사드립니다. 왜 이것이 내가 두통을 일으키는 지 모르겠다.
버튼의 IF 문에 구문이 잘못된 것 같습니다. 누락 된 ")"어딘가. 일반적으로 IF 문에서 함수를 호출하지 않으므로 잘 모르겠습니다. 감사! – user3817083
신경 쓰지 마라. 고마워요! 너 다 남자 야! – user3817083
이게 유용했다면 환영합니다. :) –