2011-12-22 105 views
3

我有2個元素a <ul><div>mouseleave 2個元素顯示/隱藏1個元素?

如果我將鼠標懸停在div上我希望ul出現,當我mouseleave div時我想檢查鼠標是否超過ul,如果不是,我想再次隱藏ul。

這是我的代碼,它適用於Chrome瀏覽器和Safari瀏覽器,但不是在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> 

SOLUTION

好,感謝crowicked我來到了我想要的效果,這是對誰感興趣的人的代碼。

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

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

    } 
); 

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

你可以發佈你的HTML結構。在事件處理程序中分配了很多事件處理程序,這應該真的被避免。 – 2011-12-22 15:41:34

+0

我同意Rory ......它有點像Inception一樣 – isNaN1247 2011-12-22 15:44:46

+0

似乎沒有「主包裝」和「頁腳」之間(除了可能邊距/填充)。檢查我給你的答案。 – crowicked 2011-12-22 16:05:05

回答

1

爲什麼不封閉ul#date.footer元素,只是使用.hover()功能上.footer顯示/隱藏<ul>

編輯: 添加了drupal標記。 嘗試類似這樣:

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

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

我試圖做到這一點,但我是新來的dr​​upal和在drupal頁腳是從實際節點分離,所以從我明白我不能只是添加日期ul到頁腳。 – WingLeung 2011-12-22 16:06:50

+0

好的,添加了drupal標籤。 – crowicked 2011-12-22 16:11:18

+0

這是一個非常好的解決方案,我只是不喜歡這種閃爍,當我按照以下順序進行鼠標移動時:footer> ul#date> footer – WingLeung 2011-12-22 16:30:30

0

不是這樣嗎?

$('.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 2011-12-22 16:04:58