2011-02-12 2 views
0

메뉴를 만들고 있습니다. 메뉴는 다음과 같습니다.jQuery - 다른 (관련) 클릭을 트리거하는 click 및 addclass?

$('.category').mouseover(function() { $(this).removeClass('category').addClass('categoryhover'); }).mouseout(function() { $(this).removeClass('categoryhover').addClass('category'); }); 
$('.category').click(function() { $('.catmenu').removeClass('catmenu').addClass('hide'); $('.categoryact').removeClass('categoryact').addClass('category'); $('.hide', this).removeClass('hide').addClass('catmenu'); $(this).removeClass('category').addClass('categoryact'); }); 
$('.categoryact').live('click', function() { $('.catmenu').removeClass('catmenu').addClass('hide'); $(this).removeClass('categoryact').addClass('category'); }); 

카테고리 분류와 사업부를 클릭하면 해당 범주에 새로운 클래스 (categoryact)를 제공하고 하위 메뉴를 표시합니다. 아마 그것을 다시 클릭하면 그것을 숨길 것입니다. 그러나 클릭 된 div에 새 클래스 (categoryact)를 제공하는 이벤트가 숨겨지면 해당 함수를 숨기는 기능도 트리거됩니다. 물론 결과는 하위 메뉴를 표시하는 첫 번째 클릭이 아무 것도하지 않는 것 같습니다. 물론 우리는 실제로 다른 하나를 해고한다는 것을 압니다.

"숨기기"기능을 트리거하는 이유와 해결할 수있는 방법을 누군가 말해 줄 수 있습니까? 또는이 방법을 더 간단하게 작성하는 방법입니다. 추가/제거 클래스가 많이 있습니다. ;)

감사합니다.

+1

jQuery의 toggle() 및 toggleClass() 함수를 사용하면 더 쉽지 않을 것입니다 ? http://api.jquery.com/toggle, http://api.jquery.com/toggleClass ... 그런 식으로 간단한 click()이 클래스를 토글하기 때문에 live() 바인딩이 전혀 필요하지 않을 수도 있습니다. 하위 메뉴 –

+3

CSS에서 호버 효과를 추가하는 방법이 있습니까? 내 경험상, 그것은 가장 간단합니다. 어쩌면 HTML과 CSS를 게시하고 우리가 도울 수 있습니다. – rcravens

+0

http://jsfiddle.net/5EkZm/ 도움이되는이 희망을 시도해보십시오. – Rafay

답변

1

그것은 jQuery의 toggle()toggleClass() 기능을 사용하여 쉽게되지 않을 것 (의견에서 복사, 그래서 대답은 받아 들여질 수)? ... 그런 식으로 간단한 click()이 클래스와 하위 메뉴를 토글 할 것이기 때문에 live() 바인딩이 전혀 필요하지 않을 수도 있습니다.

+0

고마워, 지금 나는 upvote + 받아 들일 수 있습니다. 당신의 제안은 실제로 나는 등 뒤를 탈 필요가있는 바지의 킥이었다. 결국 대답이 끝났습니다. :) – Zydeco

+0

도와 줘서 고맙고, 고마워요 .-) –