2013-02-21 5 views
0

현재에 대한 클래스를 제거, 나는이 조각 사용하고 있습니다 :jQuery를 토글() - 추가 활성 요소

$('.element-block').click(function(){ 
    $(this).siblings(".key-element").toggle(); 

    $('.background-area').removeClass("active_bg"); 
    $(this).parent('.background-area').addClass("active_bg"); 
}); 

내가 DIV 요소의 목록을 가지고 있습니다. 이 블록에서 .element-block을 클릭하면 기능 토글()이 필요 영역을 표시합니다. 다시 클릭하면 토글 토글이 표시되고이 영역에 배경색이 추가됩니다.

예 : A .block-element을 클릭합니다. 데이터가 나타나고 + 배경색이 변경되었습니다. 그런 다음 B .block-element을 클릭합니다 - 데이터가 나타나고 + 배경색이 변경되었습니다. 시원한.

하지만은 A .block-element 클릭하면 - 데이터가 나타 + 배경 색상을 변경하고 나서이 (가) .block-element 다시 클릭하면된다 - 데이터가 숨겨집니다 만, 배경 색상 을 변경되지 않습니다.

이 문제를 해결하는 방법은 무엇입니까?

+1

피들링을 만들 수 있습니까? – Mooseman

+0

당신은 CSS와 HTML을 줄 수 있습니까 ?? – jubair

+0

하나의 요소에 "active_bg"클래스를 추가했지만 다른 요소에서 해당 요소를 제거하는 것으로 보입니다. 구조를 설명하기 위해 몇 가지 예제 HTML을 게시 할 수 있습니까? – Raad

답변

1

항상 클래스를 추가하기 때문입니다.

var $active_bg = $('.background-area.active_bg').removeClass("active_bg"); 
var $bg = $(this).parent('.background-area'); 

// Only add the class if the current background didn't have the class 
if ($bg[0] !== $active_bg[0]) { 
    $bg.addClass("active_bg"); 
} 

위의 코드는 하나 개의 .background-area 요소는 "활성"할 수 있습니다 : 당신은 단지 그것을 제거하거나뿐만 아니라 추가할지 여부를 사전에 확인할 수 있습니다. 코드가 여러 개인 경우 코드를 다음과 같이 단순화 할 수 있습니다.

$(this).parent('.background-area').toggleClass("active_bg"); 
+0

감사합니다.'Felix',이게이 문제를 해결하는 데 도움이되었습니다. Btw., 나는 그것이'$'char에서 JS의 변수 이름으로 사용하는 것이 가능한지 몰랐다. – user984621

+0

'$'는'$()'에 무엇이라고 생각하십니까? ;) 그것은 하나의 문자'$'로 구성된 변수이며, 값으로 함수를 가지고있다. –

+0

나는 이것을 'var bg'대신에'var $ bg'라고했다. – user984621