2011-02-06 2 views
2

내 계속 버튼에는 사용 중지 이유를 알려주는 호버 (hover) 이벤트가 있습니다. 유일한 문제는이 작동하지 않는jquery : 숨기기 이벤트가 취소됩니까?

function disable_continue_button(){ 
    $('#frame_2 > .next') 
     .addClass('faded tt') 
     .hover(function(){ 
      $hovered = $(this); 
      //tooltip? 
      tip = $('.tip.notification.information'); 
      tip.find('div').html($hovered.attr('tt')); 
      tip.fadeIn(150); 
     }, 
     function() { 
      tip.hide(); 
     }) 
     .mousemove(function(e) { 
      var mousex = e.pageX +40; //Get X coodrinates 
      var mousey = e.pageY -20; //Get Y coordinates 
      tip.css({top: mousey, left: mousex }); 
     });  
} 

작동

.... 내가 버튼을 사용하도록 설정하면 내가 가져가 이벤트를 제거 할 수있다

function enable_continue_button(){ 
    $('#frame_2 > .next')   
     .unbind('mouseenter mouseleave mousemove') 
     .removeClass('faded tt');  
} 

클래스는 제거되지만 호버 툴팁은 제거되지 않습니다 ...

+0

'enable_continue_button()'을 호출하는 문맥에서 제게 잘 동작합니다 ('mouseenter'와'mouseleave'의 바인딩 해제를 통해 마우스를 올리면 해제됩니다)? 'addClass' 함수가 잘못 되었기 때문에 쉼표를 제거해야합니다. 이를 바탕으로'faded'와'tt'가 클래스로 추가되었는지 확신합니까? 어쩌면'nable_continue_button()'호출이 실패합니다 * 그리고 * clases가 추가되지 않아 제거 된 것으로 보입니다. –

+0

@felix - 죄송합니다 쉼표는 여기에 오타가 있습니다. 이상한 그것이 당신을 위해 일하고있어! – Haroldo

+0

http://jsfiddle.net/ebpM3/ 여기를 참고하십시오. 이렇게하면 'hover'를 해제 할 수 있습니다 (텍스트가 빨간색으로 바뀌지 않음). 오류 메시지가 나타나며 클래스가 제거되었는지 (예 : 'enable_continue_button'이 (가)) 있는지 확인하십시오. –

답변

5

mouseenter, mouseleave, mouseover 및 mouseout의 바인딩을 해제하십시오.

$('#frame_2 > .next').unbind('mouseenter mouseleave mouseover mouseout'); 

편집 :

바인딩 해제 단지 mouseenter와하는 MouseLeave이 충분하다.

여기에 an example이 표시됩니다. 위의 네 가지 이벤트가 언 바운드되면 툴팁 기능이 제거됩니다.

.hover(fnEnter, fnLeave)은 본질적으로 .mouseenter(fnEnter).mouseleave(fnLeave)입니다.

는하지 때문에 모든 브라우저가 이벤트를 에뮬레이트하는 각각의 경우에 몇 가지 추가적인 로직, mouseout()에, (내가 올바르게 기억 만 IE는 않습니다), 기본적으로 mouseover()mouseleave()지도에 mouseenter()지도를이 두 가지 이벤트를 지원합니다.

+1

마우스 만/mouseleave 만 있으면 충분합니다. 이들은 jQuery 이벤트 (호버와 달리 - jQuery.event.special을 검사하여 확인할 수 있음)가 있으므로 브라우저에 네이티브 mouseenter 이벤트가 없더라도 이것이 이벤트 핸들러에 바인딩되는 이름입니다. – Tgr

+0

안녕하세요 당신은 분명히 작동합니다. 그래서 어딘가에 내 코드에 문제가있을 것입니다. 내'enable_continue_button()'함수가 클래스를 확실히 제거하지만 툴팁의 바인딩을 해제하지 않는다는 것을 의미합니다 ... – Haroldo

+0

@Tgr - 이것을 반영하여 업데이트됩니다. –

0

이 관련된 질문 may p 모든 것을 바인딩 해제하면 필요한 것을 다시 바인딩 할 수 있습니까? how to unbind all event using jquery

+0

정말 좋은 방법입니까? – Haroldo

+0

잘 모르겠지만, 시작하고 거꾸로 작업 할 수있는 곳 일 수 있습니다. 또한 jQuery의 .live()를 사용하여 제거하려는 클래스에 이벤트를 연결할 수도 있습니다. 클래스를 제거 할 때 이벤트를 바인딩 해제해야합니다. http://api.jquery.com/live/ – jocull