2016-08-05 4 views
0

저는 아코디언 스타일의 비디오 섹션을 만들고 있습니다. 현재 클릭이 클래스에 있는지 확인하려고합니다. 나는 한 번에 열린 1 절을 원하는, 그래서 클래스를 클릭 jQuery : 클래스가있는 경우 제거한 다음 새 요소에 추가하십시오.

  • 에 있는지 나는 그것이 않으면 클릭 된 요소
  • 에 클래스를 추가 클래스를
  • 을 제거

    1. 확인해야

      그냥 addClass();toggleClass();으로 시도했지만 100 % 확실하지 않습니다.

      클래스 추가

      $(".contents-row").click(function(){ 
          $(this).toggleClass("content-open"); 
      }); 
      

      전환 클래스

      $('.contents-row').click(function(){ 
          $(this).toggleClass('content-open'); 
      }); 
      

      이 기본 HTML이 설정되어

      <div class="contents-row"> 
          <div class="content-option press"> 
           <div class="class-section-title">test1</div> 
          </div> 
          <div class="drop"> 
           test 1 
          </div> 
      </div> 
      

      드롭 다운의 전체 버전은 JSFiddle입니다.

      도움 주셔서 감사합니다.

  • +0

    https://jsfiddle.net/7e6bknyr/4/ –

    +0

    난 당신이'hasClass()를 사용한다고 생각'은'each' 모든 요소의 불필요한 반복을 추가 – Abhi

    답변

    5

    먼저 content-open 클래스를 갖는 모든 요소에서 content-open 클래스를 제거하십시오. 그런 다음 클릭 한 요소에 다음과 같이 클래스를 추가합니다.

    $('.contents-row').click(function(){ 
        $('.content-open').removeClass('content-open'); 
        $(this).addClass('content-open'); 
    }); 
    
    0

    나는 당신이 사용할 수있는 가정 :

    $('.contents-row').click(function(){ 
        $('.contents-row').each(function(){ 
          $(this).removeClass('content-open'); 
        }) 
         $(this).toggleClass('content-open'); 
    }); 
    

    는 jsfiddle : 당신은 클래스 contents-row 첫째로 모든 div에서 클래스 content-open을 제거하고 현재에 추가 할 필요가 https://jsfiddle.net/8822fmhk/

    +0

    귀하의 요구 사항에 따라'$은 (' .contents-row '). removeClass ('content-open ')'이 작동합니다. –

    +0

    토글은 클릭하면 열려있는 모든 클래스를 제거하고 추가 만 토글하기 때문에 작동하지 않습니다. –

    0

    div을 클릭 .

    $('.contents-row').click(function(){ 
        $('.contents-row').removeClass('content-open'); 
        $(this).toggleClass('content-open'); 
    }); 
    
    관련 문제