2010-04-26 5 views
1

작은 문제가 있습니다. 나는 마우스가 끝났을 때 열리는 nevigation 빌드를 가지고 있지만, 은 마우스가 끝난 것처럼 동일한 애니메이션을 실행하는 것보다 단지 이 하위 메뉴를 추가로 열어서 키 누르기를 기다린다. 이제 keypress가 활성 상태 일 때 과 함께 해당 탐색 위로 마우스를 이동하면 링크를 클릭하기 전에 닫는 동작이 실행됩니다. 어떻게 조치를 취할 수 있습니까?jQuery가 시작되기 전에 실행되는 작업을 방지합니다.

$(function() { 

// keypress 
$('html').live('keydown', function (e) { 
    if (e.keyCode == 67){ 

     $("#control").animate({width: '+=105', duration:400}, 
      function(){ 
       /*callback*/  
       $("#control").css({overflow:'visible'}); 
       $("#control-menu li a").fadeTo('fast', 1); 
       $("#categories ul").css({marginLeft: '140px', display: 'block'}).fadeIn('slow'); 
       $('#control').mouseenter(function() { $(this).stop(); }); 
      } 
     ) 
    } 
}); 

// set easing method  
jQuery.easing.def = 'easeInOutExpo'; 

// make menu work 
$("#control-menu li a").css({opacity:'0.1'}); 
$("#control").hoverIntent(
function(){ 
    $(this).stop().animate(
     {width: '+=105', 
     duration:400}, function(){ 
      /*callback*/  
      $("#control").css({overflow:'visible'}); 
      $("#control-menu li a").fadeTo('fast', 1); 
     }) 
}, 
function(){ 
    $("#control-menu li a").fadeTo('fast', 0.1); 
    $(this).stop().animate(
     {width: '-=105', 
     duration:800}, function(){ 
      /*callback*/  
      $("#control").css({overflow:'hidden'}); 
     }) 
}); 

// END 
}); 

미리 도움을 청하십시오 !!!!

친절과 관련, 오히려 즉시 애니메이션 오프닝을 중지 것, 당신의 폐쇄 조치를 발사 아니에요처럼 보이는 다니엘

답변

0

. 당신의 keydown 처리기

이 줄 :

$('#control').mouseenter(function() { $(this).stop(); }); 

현재 한 후 바인딩 #control에 이벤트 핸들러를 추가하고는 document.ready에, 그래서 후 실행합니다. 즉, 마우스를 올리면 애니메이션을 시작한 다음 즉시 중지합니다. keydown을 눌렀을 때 mouseenter에서 처리기를 추가했기 때문입니다.

그냥 줄을 제거하면이 동작이 멈추고 ...하지만 코드를 보면 첫 번째 위치에 왜 있는지 명확하지 않습니다. 해결할 추가 기능이 있다고 설명 할 수 있다면이 현재 문제를 일으키지 않고이를 수행하는 더 좋은 방법이 있어야합니다.

0

어쩌면 나는 코드 abit를 분해해야하고 내가하고 싶은 것을 설명해야한다.

  1. // 메뉴 작업 을 기본적으로 처리 : 나는 절대적으로 초보자입니다 :)

    좋아, 내가 확실히 더 나은 방법이있을 것이라고 알고 있지만, 내가 말을해야, 그것을 깰 수 있습니다 메뉴가 호버에 표시됩니다. 모든 것은 거기에 charme처럼 작동합니다

  2. // keypress 여기에 문제가 있습니다. keybord에서 "C"를 누르면 내비게이션과 내 "범주"위로 마우스를 움직일 때 내비게이션이 동일하게됩니다. 또한 해당 지점의 하위 메뉴가 열립니다. 이제는 모두 그대로 유지됩니다. 메뉴에 마우스를 올려 놓고 메뉴를 클릭하고 싶을 때, 1. 점을 쳐서 메뉴가 정상적으로 작동하는 것처럼 닫습니다. 다음은이 함수를 삽입하는 방법입니다.

    $ ('# control').

키 누르기가 끝난 후에도 함수로 직접 입력 할 수 있으므로 마우스를 입력해도 닫히지 않습니다.

위에서 동의 한 것처럼 모든 것을 수행하는 더 좋은 방법이 있습니다. 예를 들어 모든 링크를 읽고 html 구조를 기반으로 역동적으로 keydown을 생성합니다. 불행히도 저는 멍청한 녀석입니다. 그래서 그 시점에서 저 혼자 얻지 못할 것입니다.

관련 문제