2012-05-08 2 views
0

마우스 커서를 이미지로 바꾸려고합니다.Jquery replace mouse cursor

나는 다음과 같은 HTML을 가지고 :

<div id="content-bg"> 
    <img src="path"/> 
</div> 
<div id="mouse"></div> 

CSS :

#content-bg{ 
    background:url(../img/frontend/content-bg.png) top left no-repeat; 
    width: 968px; 
    height: 552px; 
    position:relative; 
} 

#mouse { 
    cursor: none; 
    width: 75px; 
    height: 76px; 
    background: url("../img/frontend/cross.png") no-repeat center; 
    position: absolute; 
    display:none; 
    top: 0; 
    left: 0; 
    z-index: 10000; 
} 

자바 스크립트 :

$(document).ready(function(){ 
    $('#content-bg').mouseout(function(){ 
      $('#mouse').hide(); 
      $(this).css("cursor","none"); 
      return false; 
    }); 
    $('#content-bg').mouseenter(function(){ 
      $('#mouse').show(); 
      return false; 
    }); 
    $('#content-bg').mousemove(function(e){ 
      var x = e.clientX - $(document).scrollLeft() - 37.5; 
      var y = e.clientY + $(document).scrollTop() - 38; 
      $('#mouse').css('left', x).css('top',y); 
    }); 
}); 

마우스 이미지가 올바른 위치에 있지만 것을 깜박하고 화려한 . 전환은 내가 원하는만큼 부드럽 지 않습니다. 어떻게 든 그것은 mouse-mouse 및 event-event가 content-bg div 안에 마우스를 움직일 때마다 트리거되는 것 같습니다.

어떻게하면 해결할 수 있습니까?

감사 의견에서 지적 된 바와 같이

+0

마우스가 "왼쪽"그래서, 그것은 다시 입력합니다. 다른 방법으로 작업해야하거나 그대로 두십시오 ... – gdoron

+0

이미지가 표시된 위치의 오프셋을 변경하려고 했습니까? 반쪽 너비/높이를 제거하는 대신 추가하십시오. 그것 없이는 심지어 이동 div 자체 때문에 심지어 mouseout 트리거하지 않습니다 확실하지 않다 –

+0

@ gdoron하지만 절반 치수를 잘하면 작동합니다 ... 당신은 더 나은 접근 방식을 제안하거나 나를 가리킬 수 있습니까? 일부 문서 해주시겠습니까? – jribeiro

답변

2

,이 나타나는 마우스가 갑자기 #mouse 놓을 때 mouseout가 발생합니다.

당신은 수동으로 이벤트를 취소해야합니다

마우스 사업부는`내용 bg`을 숨기고 becaue의
$('#content-bg').mouseout(function(e){ 
     if($(e.relatedTarget).is('#mouse')) { return false; } 
     $('#mouse').hide(); 
     $(this).css("cursor","none"); 
     return false; 
}); 

$('#content-bg').mouseenter(function(e){ 
     if($(e.fromElement).is('#mouse')) { return false; } 
     $('#mouse').show(); 
     return false; 
}); 
+0

너는하지 않았다. 당신의 코드에'e'가 정의되어 있습니까? jQuery의 이벤트에는 'fromElement' 속성이 있습니까? – gdoron

+0

+1 우아한 방법! –

+0

@gdoron : 죄송합니다. 코드를 복사 할 때 코드를 수정하는 것을 잊었습니다. 'e'는 청취자에게 전달되는 이벤트입니다. –