2011-06-12 4 views
0

이 질문은 전에 요청을받은 수 있으며, 나는 그것을 놓친 경우 미안 해요,jQuery를 메뉴 호버

나는 메뉴 구조이 드롭 다운이 있습니다

<ul id="menu"> 
    <li><a>text1</a></li> 
    <li class="withchild"><a class="itemchild">text2</a> 
     <ul> 
     ... 
     </ul> 
    </li> 
    <li><a>text3</a></li> 
</ul> 

내가 itemchild의 배경을 변경하고 있습니다를 hover에.

$("li.withchild ul").hover(function(){ 
    $(this).parent().find('.itemchild').css('background','the new background'); 
}, 
function(){ 
    $(this).parent().find('.itemchild').css('background','the old background'); 
}); 

그리고 li.withchild a.itemchild:hover{the new background}

내 문제에 대한 CSS : 나는 .itemchild을 통해 배경의 변화를 가져 한 다음 마우스를 올려 놓으면li.withchild ul

이상, .itemchild의 배경은 새로운 배경으로 남아있다. 하지만 내가 마우스를 가져 가면

li.withchild ul으로 돌아오고 배경은 이전 배경으로 돌아갑니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 당신이 당신의 마우스이든 .itemchild 또는 li.withchild ul 위에있을 때 .itemchild 디스플레이 새로운 배경을 갖고 싶어

+1

javascript를 사용해야합니까? – cusimar9

+0

글쎄, 내가 CSS로 어떻게 할 수 있는지 모르겠다.'li.withchild ul : hover {/ * change .itemchild background * /}'? – Sparkup

+0

글쎄, 그건 정확히 당신이 그것을 코딩했습니다 행동. 나에게 맞는 것 같다. 네가하고 싶었던 행동이 뭐야? –

답변

1

, 가장 좋은 방법은 아마도 부모 요소에 마우스 오버시를 연결하는 것입니다 :

$("li.withchild").hover(function(){ 
    $(this).find('.itemchild').css('background','the new background'); 
}, 
function(){ 
    $(this).find('.itemchild').css('background','the old background'); 
}); 

또는, wrapAll()으로 자신의 새 div에 li.withchild ul.itemchild을 먼저 래핑 한 다음 해당 이벤트를 첨부 할 수 있습니다.

질문을 올바르게 이해하고 있습니까?

+0

예. 하지만 CSS로 그 일을 할 수 있습니다. 문제는 내가 배경 화면으로 돌아갈 때 li.withchild ul 위로 마우스를 가져 가면됩니다. 나는 jsfiddle을 셋업 할 것이다. – Sparkup

+0

이벤트를 부모 'li.withchild' ('li.withchild ul '이 아님)에 첨부하면 원하는대로 작동해야한다고 생각합니다. –

+0

네가 맞아, 고마워. – Sparkup