2012-12-05 2 views
0

나는 Isotope 필터 메뉴가 있으며 사용자가 페이지로 다시 돌아 오면 필터가 설정되도록 해시 기록을 사용하고 있습니다. .slideDown을 사용하여 하위 메뉴 항목을 확장하기 때문에 하위 필터 항목이 선택되어 있어도 페이지로 돌아 가면 하위 메뉴 항목이 숨겨집니다.JavaScript hasClass가 요소의 클래스를 무시하고 있습니까?

내가 사용하려고 해요 : 클래스 "선택"이 jQuery를 필터 (동위 원소)에 의해 생성되고 있기 때문에

if ($('#option1').hasClass('.selected')) { 
    $('.level-two').slideDown('fast'); 
} 

는하지만, 그것은 무시합니다.

바이올린 : http://jsfiddle.net/RevConcept/swT84/

HTML :

<nav>   

      <div id="options" class="combo-filters"> 

       <div class="option-combo location"> 

        <ul class="filter option-set group level-one" data-filter-group="location"> 

         <li class="hidden"><a href="#filter-location-any" data-filter-value="" class="selected">any</a></li> 

         <li><a id="option1" href="#filter-location-exterior" data-filter-value=".exterior" class="trigger-two">exterior</a></li> 

         <li><a id="option2" href="#filter-location-interior" data-filter-value=".interior" class="trigger-two">interior</a></li> 

        </ul> 

       </div> 

       <div class="option-combo illumination"> 

        <ul class="filter option-set group level-two" data-filter-group="illumination"> 

         <li class="hidden"><a href="#filter-illumination-any" data-filter-value="" class="selected">any</a></li> 

         <li><a href="#filter-illumination-illuminated" data-filter-value=".illuminated" class="trigger-three">illuminated</a></li> 

         <li><a href="#filter-illumination-non-illuminated" data-filter-value=".non-illuminated" class="trigger-three">non-illuminated</a></li> 

        </ul> 

       </div> 

       <div class="option-combo mount"> 

        <ul class="filter option-set group level-three" data-filter-group="mount"> 

         <li class="hidden"><a href="#filter-mount-any" data-filter-value="" class="selected">any</a></li> 

         <li><a href="#filter-mount-wall" data-filter-value=".wall">wall</a></li> 

         <li><a href="#filter-mount-ground" data-filter-value=".ground">ground</a></li> 

        </ul> 

       </div> 


      </div><!--end options--> 

     </nav> 

CSS :

header nav ul.level-two, header nav ul.level-three { 
display:none; 
} 

자바 스크립트 : '.'나는 당신이 누락 추측

$(function(){ 
    $('.level-one').hide().fadeIn('fast'); 
}); 


$(".trigger-two").one('click', function(){ 
    $(".level-two").slideDown('fast'); 
}); 


$(".trigger-three").one('click', function(){ 
    $(".level-three").slideDown('fast'); 
}); 


if ($('#option1').is('selected')) { 
    $('.level-two').slideDown('fast'); 
} 

답변

1

반복 된 기능으로 각 클릭의 동일한 프로세스를 복사하는 대신. 선택 된 앵커에 대한 클릭을 프로그래밍 방식으로 트리거 할 수 있습니다.

$('.option-combo a.selected').trigger('click'); 

바이올린 : http://jsfiddle.net/jgkwd/

+0

이것은 피들에서 아름답게 작동합니다 ...하지만 내 dev 사이트의 페이지로 돌아갈 때 어떤 이유로 하위 메뉴 옵션이 다시 숨겨집니다. [예] (http://revelationconcept.com/hosting/trademark_temp/)) – RevConcept

+0

내가 틀릴 수도 있지만 주문 때문에 자바 스크립트 파일이 페이지에 포함되어있을 수 있습니다. .selected 클래스를 추가 한 스크립트는 toggle 스크립트 뒤에 추가되어'$ (document) .ready (function)())'과'$ (function())'(내가 아는 한 동일하다) 대기중인 다음 잘못된 순서로 호출됩니다. – qooplmao

+0

나는 그것을 시도했지만 도움이되지 못했지만 그 시점에서 나는 다른 문제의 조합을 가지고 있었다고 생각한다 ... 당신이 옳았다! 대단히 감사합니다 ;) – RevConcept

2

+0

네, 감사했다 ...하지만를 추가하면 문제가 해결되지 않습니다. 요소에 내 자신의 클래스를 만들고 사용하면 동적 "선택된"클래스에만 문제가 있습니다. – RevConcept

+1

클래스를 어떻게 설정하고 있습니까? 그것은 addClass()를 사용하고 있습니까 –

+0

직접적으로하지는 않습니다. Isotope 옵션에 내장되어 있습니다 ... 그렇습니다. 그들은 addClass/removeClass 등을 사용하고있는 것처럼 보입니다. 내 [fiddle] (http : // jsfiddle.net/RevConcept/swT84/2/) 자바 스크립트 영역의 아래쪽으로 "ISOTOPE SETTINGS"가 표시됩니다. – RevConcept