문제

JQuery Accordion 플러그인을 사용하여 페이지에 여러 아코디언을 설정하여 모든 기능을 확장하고 모든 기능을 축소 할 수 있습니다.

각 ID 요소는 자체 아코디언이며 아래 코드는 이미 열린 곳이 이미 열려 있더라도 모든 것을 폐쇄하기 위해 작동합니다.

$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
    .accordion("activate", -1)
;

내 문제는 모든 것을 확장하는 것입니다. 이 코드로 모두 확장 할 때 :

$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
    .accordion("activate", 0)
;

일부는 계약을 맺고 일부는 이전에 열려 있는지 여부에 따라 확장됩니다.

이것을 바로 잡는 나의 생각은 그것들을 모두 붕괴시킨 다음 모든 확장을 클릭했을 때 모든 것을 확장하는 것이 었습니다. 그러나이 코드는 제대로 실행되지 않습니다.

$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
    .accordion("activate", -1)
;
$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
    .accordion("activate", 0)
; 

그것은 두 번째 명령에 맞고 먼저 닫지 않을 것입니다. 제안이 있습니까?

도움이 되었습니까?

해결책

나는 당신이 무엇을 추구하는지 정확히 잘 모르겠지만 이것이 나의 최선의 추측입니다. 모든 아코디언 중에서, 당신은 "모두 열기"버튼이 닫힌 모든 아코디언을 열기를 원합니다 (즉, 섹션은 표시되지 않습니다). 나는 그것을 사용하여 그렇게 할 것이다 filter()

$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
    .filter(":not(:has(.selected))")
    .accordion("activate", 0)
;

그게 당신이 겪었던 것입니까?


필터 기능을 설명하려면 편집 :

필터 기능은 필터를 통해 현재 선택을 실행하여 일치하지 않는 것을 제거합니다. 위에서했던 것처럼 일반 jQuery 쿼리를 통과하는 두 가지 형식과 다른 하나는 필터링 기능을 정의 할 수있는 곳입니다. 함수가 False를 반환하면 해당 요소가 제거됩니다.

이 경우 쿼리는 그렇지 않은 것을 제거합니다.:not) 가지다 (:has) "선택된"수업이있는 어린이 (.selected). 나는 그것을 사용했다 .selected 아코디언이 현재 열린 패널에 추가하는 것입니다.

아코디언이 하나만 있거나 각 아코디언에게 클래스 이름과 같은 일종의 식별자를 주면 전체 스크립트를 크게 줄일 수 있습니다. 당신이 아코디언으로 바꾸고 싶은 각 요소에 대해, 당신은 그것을 "어코드"를 제공한다고 가정 해 봅시다.

$(".accord:not(:has(.selected))").accordion("activate", 0);

당신이 원하는 경우 앞으로 더 많은 아코디언을 추가 할 수 있기 때문에 이것은 훨씬 더 읽기 쉽고 유지 관리 가능합니다.

필터에 대한 문서는 다음과 같습니다. http://docs.jquery.com/traversing/filter

다른 팁

jQuery('#accordion').accordion({        
    active:-1,
});

나는 같은 문제를 겪었고 jQuery의 각 () 함수를 활용하여 붕괴하기 위해 단편 코드로 해결하면서 항목 [0]에 초점을 맞추면 정상적인 탐색이 재개 될 수 있습니다.

http://spstring.jeffthink.com/?p=49

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top