코딩 질문드립니다. > 그누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문을 중간에 넣으니 슬라이드 자체가 안내려오는데 그건 제가 뭔가 잘못 써서 그런거겠죠..;
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT