2011-06-06 135 views
0

我相當使用簡單的jQuery方法下拉。但代碼不工作在Firefox 3.5和更低,也沒有歌劇。他們是否可以用這些瀏覽器替代懸停或slideDown?其工作WebKit的偉大,火狐3.6並IE8 +jQuery懸停/ slideDown問題

HTML

<ul id="menu"> 
    <li> 
    <ul> <!-- this is the dropdown part --> 
     <li><a href="#">#</a></li> 
     <li><a href="#">#</a></li> 
    </ul> <!-- end dropdown --> 
    </li> 
</ul> 

jQuery的

$('#menu li').hover(
    function() { 
     $('ul', this).slideDown(250); 
    }, 
    function() { 
     $('ul', this).slideUp(250);   
    } 
); 
+0

爲什麼在列表中有一個列表?你希望滑動哪個li元素?外部的一個,內部的一個還是兩個? – 2011-06-06 18:19:26

+0

@Razor Storm:我假設這是一個手風琴菜單。但我可能是錯的。定義'不工作'。瀏覽器控制檯中是否有錯誤? – 2011-06-06 18:21:39

+0

@Razor風暴它不是一個手風琴,它的下拉菜單,我想顯示第一個裏面的UL ..希望保持使用UL的HTML規則:) ..我剛剛編輯與評論的問題... – Flash 2011-06-06 18:24:06

回答

0

代碼的改編工作得很好,對我來說,在這兩個鉻11和Firefox 4(Ubuntu 11.04):

$('#menu > li:has("ul")').hover(
    function(){ 
     $(this).find('ul').slideDown(); 
    }, 
    function(){ 
     $(this).find('ul').slideUp(); 
    }); 

JS Fiddle

注:

  • $('#menu > li:has("ul")')僅僅是一個更具體的選擇器(它的目標僅#menu元素的直接後代,是既li元件含有ul元素)。
  • $(this).find('ul')相同的情況下選擇($('ul,this))除了內部的jQuery調用$(this).find()方法反正:

內部,選擇上下文與.find()方法實現的,所以$('span', this)相當於$(this).find('span')

參考: