저는 jQuery 프로그래밍에 익숙하지 않으며 사용자 정의 jQuery 아코디언에 문제가 있습니다. 현재 링크에 대한 아코디언 확장에 대한 나의 시도는 성공적이지 못했으며 어떻게 작동 시킬지에 대한 손실이 있습니다.jQuery 아코디언 메뉴 확장 및 최적화
주 질문 : 섹션 [2]을 (현재 활성화 된 링크를 확장하고 강조 표시) 어떻게 얻을 수 있습니까?
이 문제는 내가 요소를 선택하는 방법과 관련이 있다고 생각합니다. 이 섹션에있는 코드 세 줄은 현재 내 최고의 샷입니다. 그것은 강조 표시하고 확장합니다 모두 링크 및 하이라이트 모두 아코디언 헤더 (h2). 물론 내가하는 일이 아닙니다. 아코디언이 다르게 구조화 된 것처럼 보이는 내 온라인 검색은 효과가 없었습니다. 또는 어떤 대답도이 경우에 적합하지 않기 때문에 몇 가지 주요 개념을 오해하고 있습니다.
보조 질문 : 어떻게 섹션 3을 최적화 할 수 있습니까? 코드 자체는 간단하지만 여러 번 반복하여 아래 섹션 [3]에서 혼란 스럽습니다. 여기
내 현재 jQuery 코드, adapted from this tutorial입니다 :
jQuery(document).ready(function() {
// [1] initialize
var parentDivs = $('#nestedAccordion div'),
childDivs = $('#nestedAccordion h3').siblings('div'),
lowDivs = $('#nestedAccordion h4').siblings('div'),
img1 = '...',
img2 = '...';
// [2] expand current link
$('#nestedAccordion a').addClass("a-active");
$('#nestedAccordion a').parents('div').slideDown();
$('#nestedAccordion a').parents('div').find('h2').addClass("open");
// [3] accordion movement (repetitious...)
$('#nestedAccordion h2').click(function() {
parentDivs.slideUp();
$('#nestedAccordion h2').removeClass("open");
$('#nestedAccordion h3').removeClass("open");
$('#nestedAccordion h4').removeClass("open");
$('#nestedAccordion h2').find('img').attr('src', img2);
$('#nestedAccordion h3').find('img').attr('src', img2);
if ($(this).next().is(':hidden')) {
$(this).next().slideDown();
$(this).find('img').attr('src', img1);
$(this).addClass("open");
} else {
$(this).next().slideUp();
$(this).find('img').attr('src', img2);
$(this).removeClass("open");
}
});
$('#nestedAccordion h3').click(function() {
childDivs.slideUp();
$('#nestedAccordion h3').removeClass("open");
$('#nestedAccordion h4').removeClass("open");
$('#nestedAccordion h3').find('img').attr('src', img2);
if ($(this).next().is(':hidden')) {
$(this).next().slideDown();
$(this).find('img').attr('src', img1);
$(this).addClass("open");
} else {
$(this).next().slideUp();
$(this).find('img').attr('src', img2);
$(this).removeClass("open");
}
});
$('#nestedAccordion h4').click(function() {
lowDivs.slideUp();
$('#nestedAccordion h4').removeClass("open");
$('#nestedAccordion h4').find('img').attr('src', img2);
if ($(this).next().is(':hidden')) {
$(this).next().slideDown();
$(this).find('img').attr('src', img1);
$(this).addClass("open");
} else {
$(this).next().slideUp();
$(this).find('img').attr('src', img2);
$(this).removeClass("open");
}
});
});
여기 아코디언 HTML 구조입니다. 각 레벨에는 div가있어서 jQuery slideUp 및 slideDown 함수가 작동합니다. div는 확장 및 축소됩니다. 당신이 당신의 자신의 아코디언을하는 경우
<div id="nestedAccordion">
<h2>Top-level Heading</h2>
<div>
<h3>Mid-level Heading</h3>
<div>
<h4>Bottom-level Heading</h4>
<div>
<ol>
<li>Link</li>
</ol>
</div>
</div>
</div>
</div>
빠른 응답을 부탁드립니다. 내가 제공 한 코드로 jsfiddle를 시도했지만 작동시키지 못했습니다. 'jQuery'대신 '$'사용에 대한 좋은 지적 - 내 게시물에서 편집했습니다. 내 jsfiddle 시도는 다음과 같습니다. [link] (http://jsfiddle.net/Turgon/JFm35/2) – Turgon
@Turgon jsfiddle을 조금 업데이트했습니다. Jsfiddle은 자동으로 자바 스크립트를로드하므로 주위에 '$ (document) .ready'가 필요하지 않습니다. – user3334690
아, 그게 필요한지에 대해 궁금해하고있었습니다, 감사합니다. 업데이트 된 jsfiddle을 보려면 어떻게해야합니까?/3 /, 4, 5 등의 URL 끝 부분을 편집 해 보았지만 '404를 찾을 수 없습니다.'라는 메시지가 나타났습니다. 위의 업데이트 된 게시물의 정보로 /6/에 최신 업데이트를 게시했습니다. 하위 레벨이 예상대로 작동하지 않는 것 같습니까? 도움을 주셔서 대단히 감사합니다 - 감사드립니다! – Turgon