코딩 질문드립니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

코딩 질문드립니다. 정보

코딩 질문드립니다.

본문

<nav id="gnb">
  <menu>
    <li class="gnb on"><a href="#"><img src="a01_off.png" onmouseover="this.src='a01_off_on.png'" onmouseout="this.src='a01_off_off.png'"></a>
      <ul class="submenu">
        <li class="on"><a href="#"><img src="b01_off.png"></a></li>
      </ul>
    </li>
    <li class="gnb on"><a href="#"><img src="a02_off.png" onmouseover="this.src='a02_off_on.png'" onmouseout="this.src='a02_off_off.png'"></a>
      <ul class="submenu">
        <li class="on"><a href="#"><img src="b02_off.png"></a></li>
      </ul>
    </li>
  </menu>
</nav>

이런 메뉴바가 있습니다.

js 파일에 관련된 부분이 아마도 이부분인거 같습니다.

$(document).ready(function() {

// gnb
$("#gnb li.gnb").hover(function() {
$("#gnb .submenu").hide();
$(this).find(".submenu").slideDown();
}, function() {
$("#gnb .submenu").slideUp();
});
});

그런데 이건 그냥 서브메뉴 슬라이드 부분인거 같고, 제가 표현하고 싶은건 마우스가 서브메뉴에 가도 상위 메뉴 이미지가 _on.png로 유지되는 스크립트를 작성하고 싶습니다.

// gnb
$("#gnb li.gnb ul.submenu").hover(function() {
$(this).parent().parent("img").attr("src", $(this).parent().parent("img").attr("src").replace("_off", "_on"));
});

이렇게 해봤는데 도저히 안되더라구요..

고수님들 조언 부탁드립니다.
  • 복사

댓글 전체

선택한 객체가 이미지가 되도록만 하면 되는 문제인데..
parent를 써서 상위로 가버리면 어쩝니까?  children으로 하위로 가야 이미지에 도달하죠
어쨌던 this가 이미지를 직접 가리키도록 이렇게 해보세요
  $('.submenu img').hover(function(){
      $(this).attr('src', $(this).attr('src').replace('_off','_on') )
    },function(){  $(this).attr('src', $(this).attr('src').replace('_on','_off'))
  });
아뇨 섭이미지를 변환하는게 아니라 섭메뉴에 마우스를 올려도,즉 메인메뉴에서 마우스를 아웃해도 하위 섭메뉴에만 마우스가 올라가 있으면 메인메뉴가 on상태로 계속 유지되는게 포인트입니다. 그래서 제 짧은 생각에는 parent로 올라가서 off상태인 메인메뉴 이미지를 on 상태로 만들어야 할꺼 같아서 저렇게 쓴거구요..;
균이님께서 알려주신대로 해도 그대로네요. 도데체 뭐가 문제인지..ㅜ_ㅜ
아, 질문을 잘못 이해했습니다
이렇게 해보세요
$(".submenu").hover(function() { obj=$(this).siblings().eq(0).children();
  obj.attr("src",obj.attr("src").replace("_off", "_on"));
  }, function(){ obj.attr("src",obj.attr("src").replace("_on", "_off"));
});
또는
$(".submenu").hover(function() { obj=$(this).siblings(':first').children();
 obj.attr("src",obj.attr("src").replace("_off", "_on"));
}, function(){ obj.attr("src",obj.attr("src").replace("_on", "_off"));
});
균이님 한가지만 더 여쭤볼께요. 이렇게 하니까 원래 on되어있던 메뉴도 서브메뉴에서 마우스가 빠져나가니 off로 바뀌는데 이건 어떻게 해야하나요..;; 계속 혼자 삽질하다가 또 막혀서 어쩔수 없이 질문드립니다..ㅜ_ㅜ if문을 중간에 넣으니 슬라이드 자체가 안내려오는데 그건 제가 뭔가 잘못 써서 그런거겠죠..;
© SIRSOFT
현재 페이지 제일 처음으로