2011-08-10 4 views
0

이미지에 롤오버 할 때 이미지에 활성 클래스가 연결되어 있지 않으면 메뉴가 있습니다. 내 문제는 첫 번째가 아닌 두 번째 롤에서만 이미지가 변경된다는 것입니다. 이것이 어떤 아이디어인지. 당신이 다른 블록까지 hover에 두 번째 호출을하지 않기 때문에 그것은이다IF ELSE Hover 문은 두 번째 호버에서만 작동합니다.

$("#contact").hover(function() { 
    if ($("#contact").is(".active")) { 
     $("#contact img").attr("src","Images/Menu/contact_hover.png") 
    } 
    else { 
     $("#contact").hover(function() { 
       $("#contact img").attr("src","Images/Menu/contact_hover.png") 
      }, 
      function() { 
      $("#contact img").attr("src","Images/Menu/contact.png") 
     }); 
    } 
}); 
+0

초기 HTML의 모양은 무엇입니까? –

+0

활성 클래스는 어떻게 연결됩니까? – scottheckel

+2

CSS 호버를 사용하지 않는 이유는 무엇입니까? – Spudley

답변

2

당신은 jQuery를 함께이 일을해서는 안된다, 정말 필요가 없습니다. CSS Image sprites에 읽어이 같은 CSS를 가져가 선택기 사용하십시오 :

#contact { 
    background: url(/url/of/img) no-repeat; 
} 

#contact:hover { 
    background-position: ; // Change to desired image 
} 

당신이 게으른 경우에 대신하여 귀찮게의 altogther 이미지를 바꿀 수, 사용하는 이미지 스프라이트의 배경 위치를 변경하려면이 작업을 수행을 스프라이트. 이 방법은 보다 가벼우 며 호환성은입니다.

0

처음으로 실행됩니다. 모든 이벤트 처리기를 $(document).ready에 설정하면 잘 수행해야합니다.

0

당신은 당신의 코드를 단순화한다 -에서이

$("#contact").hover(function() { 
    if (!$("#contact").hasClass("active")) { 
     $("#contact img").attr("src","Images/Menu/contact_hover.png") 
    } 
}, 
function() { 
    if (!$("#contact").hasClass("active")) { 
     $("#contact img").attr("src","Images/Menu/contact.png") 
    } 
}); 
+1

하하 당신이 텍스트 입력 속도에 나를 이길, 이것은 다소 정확하게 내가 입력하려고했던 것입니다. 중단하십시오! – numbers1311407

+0

내 대답을 작성하는 동안 "이 게시물에 새로운 답변이 있습니다."라는 빨간색 메시지가 다른 사람들에게 :-) 빨리 완성되었습니다. 나는 서쪽에서 가장 빠른 총 (http :// /meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem) 이번에는 :-) – TMS

+0

당신의 의견을 Upvoting :) – TMS

0

작동 예를보십시오 : http://jsfiddle.net/HNGMT/

이 ** 예는없는 active 하나의 클래스 하나의 차이를 보여주기 위해이 개 된 div를 사용합니다. 법원의 HTML은 데모 용도로만 사용됩니다. contact 클래스의 jQuery 선택기는 id 선택기를 반영하도록 수정됩니다.

HTML :

<div class="contact"><img src="/contact.png" alt="contact inactive" /></div> 
<div class="contact active"><img src="/contact.png" alt="contact active" /></div> 

자바 스크립트 :

$(".contact").hover(function() { 
    $(this).find("img").attr({src:"contact_hover.png", alt:"contact hover"}); 
}, function(){ 
    var ele = $(this); 
    if(!ele.hasClass("active")){ 
     ele.find("img").attr({ src:"contact.png", alt:"contact inactive"}); 
    } 
});