2014-04-28 9 views
1

작업 표시 줄에 "시작"버튼이 있습니다. 그 위에 마우스를 가져 가면 추가 옵션 (로그인, 등록, 로그 아웃)이 표시됩니다. http://jsfiddle.net/wF43d/4/마우스 센터 (또는 마우스 오버)를 바인딩 해제하는 방법

//1. bind mouseenter/mouseleave to imitate ".hover()": 
$('#start').bind({ 
    mouseenter: function(e) 
      {//some other positioning code goes here 
      $slider.show(); 
      }, 

    mouseleave: function(e) 
      { 
      $slider.hide(); 
     } 
}); 

문제는 내가 최대한 빨리 밖으로 가져로부터 마우스로 이러한 추가 옵션에 도달 할 수있는 옵션을 "시작"또한 사용자의 편의를위한 (간체) JSFiddle을 만들었습니다 .unbind()를 사용 했음에도 불구하고 사라지지만, 분명히 틀리게 :

$('#logout').on({ 
mouseenter: function(){ 
    $('#start').unbind(); //this is supposed to unbind 1. but it doesn't!!! 
} //more code goes here 

(JSFiddle의 코드 줄 29).

".taskbar"의 비교적 위치가 지정된 자식 요소로 추가 옵션 (".start_options")을 포함시키고 작업 표시 줄에서 왼쪽으로 슬라이드하도록 애니메이션 할 수 있다는 것을 알고 있습니다. 그러나 이것은 작업 표시 줄의 "overflow-y : scroll;"속성에 의해 방지됩니다.이 속성은 어떤 이유로 든 "overflow-x"를 차단합니다.

그렇기 때문에 추가 옵션을 절대적으로 배치하고 "시작"버튼 위로 가져 가면 표시됩니다. 그러나 "#"의 "mouseleave"(예 : "mouseleave")를 숨길 때 숨기지 않도록하려면 어떻게해야합니까? 스타트"?

미리 감사드립니다.

답변

1

아무것도 바인딩을 해제 할 필요가 없습니다, 당신은 당신의 슬라이더에 또 다른 호버 바인딩 할 수 있습니다 그리고 그것은 jQuery를 워드 프로세서에서 좋은

$('.start_options').bind({ 
    mouseleave: function() { 
     var $start = $(this), 
      startOffset = $start.offset(); 

     $slider = $('.start_options'); 
     $slider.css({ 
      position: 'absolute', 
      top: startOffset.top, 
      left: startOffset.left - ($slider.width()) + 10 
     }); 

     $slider.hide(); 
    }, 

    mouseenter: function (e) { 
     $slider.show(); 
    } 
}); 

http://jsfiddle.net/wF43d/5/

+0

작동 :는 CSTE 연구진() 메소드는 jQuery를 1.7으로 이벤트 처리기를 문서에 첨부하는 기본 방법. 이전 버전의 경우 .bind() 메서드는 이벤트 핸들러를 요소에 직접 연결하는 데 사용됩니다. 핸들러는 jQuery 오브젝트의 현재 선택된 요소에 연결되므로 .bind() 호출이 발생하는 지점에 해당 요소가 있어야합니다. 보다 유연한 이벤트 바인딩에 대해서는 [.on()] (https://api.jquery.com/on/) 또는 [.delegate()] (https://api.jquery.com)에서 이벤트 위임에 대한 설명을 참조하십시오. /대리자/). – honk31