2014-07-10 7 views
1

.hover 효과가있는 탐색 모음을 만들었습니다. 하지만 내가 그 효과를 원한다면 내가 머물러 있거나 추가 할 때 .click을 사용할 때 추가하고 다른 막대를 클릭하면 그 효과를 제거하고 싶습니다. 죄송 혼란 :)에 대한메뉴 항목 클릭시 호버 효과 유지

내 코드는 다음과

HTML과 같이 간다 :

<div id="menubar"> 
    <div class="menubutton">Home</div> 
    <div class="menubutton">Dessert</div> 
    <div class="menubutton">About Us</div> 
</div> 

CSS :

#menubar { 
    height: 30px; 
    width: 100%; 
    background-color: gray; 
} 

.menubutton { 
    height: 30px; 
    width: 60px; 
    background-color: gray; 
    display: inline-block; 
    color: black; 
    transition: background-color 0.5s ease; 
} 

.active { 
    height: 30px; 
    width: 60px; 
    background-color: white; 
    color: red; 
} 

jQuery를 :

$('.menubutton').hover(function() { 
    $(this).addClass('active'); 
}, 
function() { 
    $(this).removeClass('active'); 
}); 

답변

0

하는 새로운 클래스 activeClick 만들기 클리 active 클래스와 CK 이벤트가 가져가 밖으로 이벤트를 제거합니다 : -

$(function(){ 
$('.menubutton').click(function(){  
    $('.menubutton').removeClass('activeClick'); 
    $(this).addClass('activeClick'); 
    }); 
}); 

Demo

+0

는 @NoobPenguinDeveloper 항상 도움 : –

+0

친구를 찾고 계십니까? 내 메뉴 버튼을 클릭하거나 선택할 때 내 탐색 막대를 유지하는 방법을 알고 계십니까? 아니면 그냥 내 메뉴 단추에 링크 다른 HTML 파일을 만들어야합니까? 다른 방법이 있습니까? 혼란스러워서 다시 미안 해요, 내가 무슨 뜻인지 이해하길 바래요. :) –

+0

@NoobPenguinDeveloper 나는 정확히 당신이 원하는 것을 이해할 수 없다. 설명 할 수 있니? 하위 문서를 의미합니까? –

2

는 클릭 처리기를 추가

$('.menubutton').click(function() { 
    $('.menubutton.active').removeClass('active') 
    $(this).addClass('active'); 
}); 

Fiddle Demo

+1

코드가 작동했습니다. 정말 고마워요. –

0

하지 테스트, 그냥이 쓴 여기 편집기에서 :

,
$(document).on('ready', function() { 
    $('.menubutton').on('click', function() { 
     $('.menubutton').removeClass('active clicked'); 
     $(this).addClass('active clicked') 
    }).on('mouseenter', function() { 
     $('.menubutton.active').not('.clicked').removeClass('active'); 
     $(this).addClass('active') 
    }).on('mouseleave', function() { 
     $(this).not('.clicked').removeClass('active') 
    }); 
}); 
0

이 시도 :

$('.menubutton').click(function() { 
    $('.menubutton').not(this).removeClass('active') 
    $(this).toggleClass('active'); 
}); 

Demo

+0

토글을 사용하려고했지만 잠시 동안 작동 한 다음 효과가 잠시 동안 작동하고 사라졌습니다. 잘못된 구문을 사용했다고 생각합니다.이 구문을 사용하려고합니다. btw .not의 사용은 무엇입니까? –

+0

.not은 현재 요소를 건너 뛰고 다른 클래스에서 활성 클래스를 제거하므로 toggleClass가 정상적으로 작동해야합니다. .not을 사용하지 않으면 toggleClass는 현재 요소에 대해 잘못된 값을 가져옵니다. –