2011-12-22 3 views
3

나는 두 개의 원소 인 <ul><div>을 가지고있다.mouseleave 2 개 요소 표시/숨기기 1 개 요소?

div 위로 마우스를 가져 가면 ul이 나타나기를 원하고 div를 mouseleave 할 때 마우스가 ul보다 큰지 확인하고 싶지 않은 경우 ul을 다시 숨기려고합니다.

이것은 크롬과 사파리에서 작동하지만 Firefox에서는 작동하지 않는 사람이이 버그의 원인을 알고 있습니까?

$('.footer') 
    .mouseenter(function() { 
     $('ul#date').fadeIn(); 
    }) 
    .mouseleave(function(){ 
     $('ul#date').hover(
      function() { 
       $('ul#date').mouseleave(function() { 
        $('.footer').hover(
         function() { 
          return; 
         }, 
         function() { 
          $('ul#date').fadeOut(); 
         } 
        ); 
       }); 
      }, 
      function() { 
       $('ul#date').fadeOut(); 
      } 
     ); 
    }); 

편집 HTML 마크 업

<div id="main-wrapper"> 

    <div class="clearfix" id="main"> 

     <div class="column" id="content"> 

      <div class="section"> 

       <h1 id="page-title" class="title">Titletest</h1> 

       <div class="region region-content"> 

        <div class="block" id="block-system-main"> 

         <div class="content"> 

          <div typeof="sioc:Item foaf:Document" class="node" id="node-13"> 

           <ul id="date" style="display: none;"> 

           </ul> 

          </div><!-- /.node --> 

         </div> 

        </div><!-- /.block --> 

       </div><!-- /.region --> 

      </div> 

     </div><!-- /.section, /#content --> 

    </div> 

</div> 

<div class="footer"></div> 

솔루션 내 원하는 효과에 와서 crowicked하는

좋아, 덕분에,이 관심이있는 사람들을위한 코드입니다.

$('.footer').hover(
    function() 
    { 
     $('ul#date').stop(); 

     if ($('ul#date:hidden')) 
     { 
      $('ul#date').fadeIn(); 
     } 

    } 
); 

$('ul#date').mouseleave(function(){ $('ul#date').fadeOut(); }); 
+1

HTML 구조를 게시 할 수 있습니까? 이벤트 핸들러에는 많은 이벤트 핸들러가 할당되어 있으며, 실제로는 피해야합니다. –

+0

나는 로리에 동의한다. 그 초기의 비트 - – isNaN1247

+0

은 "main-wrapper"와 "footer"(마진/패딩을 제외하고는) 사이에 아무것도 없다. 내가 준 대답을 확인해. – crowicked

답변

1

ul#date 내부 .footer 요소를 묶지 단지/표시 할 수 .footer.hover() 기능을 사용할 수 있습니까?

편집 : drupal 태그가 추가되었습니다. 다음과 같이 입력하십시오 :

$('.footer').hover(
    if ($('ul#date').is(':hidden')) { 
     function(){ 
     $('ul#date').fadeIn(); 
     } 
    } 
); 

$('ul#date').mouseleave(function(){ 
    $('ul#date').fadeOut(); 
}); 
+0

나는 이것을하려고 노력했으나 drupal에 익숙하지 않고 drupal에서 footer는 실제 노드들과 분리되어있다. 그래서 나는 단지 내가 추가 할 수 없다는 것을 이해한다. 바닥 글에 날짜 ul. – WingLeung

+0

괜찮습니다. drupal 태그가 추가되었습니다. – crowicked

+0

이것은 꽤 좋은 해결책입니다.이 순서대로 마우스를 가져 가면 깜박 거림이 좋아지지 않습니다. footer> ul # date> footer – WingLeung

0

아니겠습니까? <ul>을 숨길

$('.footer').mouseenter(function(){  
    $('ul#date').fadeIn();  
}).mouseleave(function(){  
    $('ul#date').hover(function(){   
     $('ul#date').mouseleave(function(){    
      $('.footer').hover(function(){     
       return;     
      }, function() {     
       $('ul#date').fadeOut();    
      });   
     }, function(){   
      $('ul#date').fadeOut();   
     } 
    ); 
}); 
+0

아니요. 마우스 포인터가 아닌 마우스 포인터로 콜백 함수를 호출해야합니다. 나는 그것이 나쁜 코딩일지도 모르며, 코드의 형식을 더 악화시킬지도 모른다는 것을 인정한다. – WingLeung

관련 문제