2011-04-19 38 views
0

我做了一個下拉菜單,它在所有現代瀏覽器中都很棒,但我不確定,它在IE中失敗,當我嘗試選擇子菜單的子元素時,它消失了。jquery懸停+位置絕對=在IE中的問題

這是網頁:http://XXX/

,這是JS代碼

$("nav li").hover(function(){ 
    $(".subnavi-wrapper", $(this)).show(); 
}, function(){ 
    $(".subnavi-wrapper", $(this)).hide(); 
}); 

編輯:顯然,這是這似乎激活IE中的「鼠標移開」的下拉頂部的空間!奇怪的是,jQuery嚴格檢測絕對位置的項目區域! :(

+0

你可以導航這些子頁面選擇首頁並從中選擇內容,所以它沒有問題。 – 2011-04-19 14:06:58

+0

是你稍後添加的東西還是我錯過的東西?你知道使用CSS創建一個下拉菜單是相當容易的。它可能會解決您現在遇到的問題。 – 2011-04-19 14:23:13

+0

其實我想稍後替換「fadeIn」的「show」。我現在只是簡化問題。 – 2011-04-19 14:28:30

回答

1

這都是因爲Li元素中的塊「subnavi-wrapper」。您必須刪除DIV,並嘗試僅使用UI元素進行操作。我做了類似的東西在這裏:http://www.muzykakoncerty.pl

這裏,像這樣:

$('#menu > ul > li').each(function() { 
    if($('ul', this).length > 0) { 
     $(this).hover(
      function() { 
       $('ul', this).show(); 
      }, 
      function() { 
       $('ul', this).hide(); 
      } 
     ); 
    } 
}); 

和我的菜單HTML代碼:

  <div id="menu"> 
       <ul> 
        <li> 
         <a href="index.html">wstęp</a> 
        </li> 
        <li> 
         <ul> 
          <li><a href="zespol-big-band.html">Big Band</a></li> 
          <li><a href="zespol-arti-sound-concert.html">Arti Sound Concert</a></li> 
          <li><a href="zespol-leszczynska-kapela-barokowa.html">Leszczyńska Kapela Barokowa</a></li> 
         </ul> 
         <a href="#">zespoły</a> 
        </li> 
        <li> 
         <ul> 
          <li><a href="taniec-dancing-sisters.html">Dancing Sisters</a></li> 
         </ul> 
         <a href="#">taniec</a> 
        </li> 
        <li> 
         <a href="o-mnie.html">o mnie</a> 
        </li> 
        <li> 
         <a href="kontakt.html">kontakt</a> 
        </li> 
       </ul> 
      </div> 

編輯:

這樣試試:

$('nav > ul > li').each(function() { 
    if($('ul', this).length > 0) { 
     $(this).hover(
      function() { 
       $('ul', this).show(); 
      }, 
      function() { 
       $('ul', this).hide(); 
      } 
     ); 
    } 
}); 
+0

什麼是關於subnavi包裝?:S我使用它,因爲我想離開下拉菜單和菜單之間的1像素線,我需要那條線是在LI – 2011-04-19 13:28:06

+0

裏面的區域容器,你可以不使用div塊,IE可能不會接受,因爲DIV並不是連續列表 - 對於他來說這是一個新的東西(我猜) – marverix 2011-04-19 13:29:03

+0

使1px行只使用CSS inside li。margin-top:1px; – marverix 2011-04-19 13:31:07

1

你有什麼使用multiple selector selector將顯示/隱藏兩個nav li.subnavi-wrapper我想你只需要切換.subnavi-wrapper

$("nav li").hover(function(){ 
     $(".subnavi-wrapper").show(); 
    }, function(){ 
     $(".subnavi-wrapper").hide(); 
    }); 

如果你只是想顯示.subnavi-wrapper下。目前li

$("nav li").hover(function(){ 
     $(this).find(".subnavi-wrapper").show(); 
    }, function(){ 
     $(this).find(".subnavi-wrapper").hide(); 
    }); 
+0

這不起作用。當我從主導航中懸停一個元素時,所有子菜單都會下降。 – 2011-04-19 13:04:29

+0

我已更新我的答案,以限制顯示/隱藏到相關subnavi – 2011-04-19 13:06:48

+0

是的,但我們不知道您的html – ezmilhouse 2011-04-19 13:06:56

0
// show 
$("nav li").live('mouseover',function(){ 
    $(".subnavi-wrapper").show(); 
}); 

// hide 
$("nav li").live('mouseout',function(){ 
    $(".subnavi-wrapper").hide(); 
}); 
+0

」live「將事件綁定到現在和將來的所有匹配元素*。正在動態添加,所以你不需要'生活' – 2011-04-19 13:07:33