2011-06-29 58 views
1

我有以下代碼:jQuery獲取懸停的bug - 爲什麼?

$(".nav_button").hover(function(){ 
m = $(this).children("ul").css("display"); 
if (m == "none"){ 
    $(this).children("ul").slideDown(300); 
} 
else{ 
    $(this).children("ul").slideUp(300); 
} 
}); 

而且很多的時候,它被竊聽,有時它的幻燈片,停留等 任何想法,這是爲什麼以及如何糾正呢?

回答

1

使用這一個,而不是擺脫支票和其他非相關的代碼

$(".nav_button").hover(function(){ 
    $(this).children("ul").slideToggle(300); 
}); 

的這種自動將根據當前狀態滑動或滑動您的UL。

這是從官方jQuery文檔:

的slideToggle();以滑動 動作顯示或隱藏 匹配元素。

0

我看不到你的代碼中有任何錯誤,也許它可以像這樣重寫。

$(".nav_button").hover(function(){ 
    m = $(this).children("ul"); 
    if (m.css("display") == "none"){ 
    m.slideDown(300); 
    } 
    else{ 
    m.slideUp(300); 
    } 
}); 

這樣你正在尋找的元素只有一次在DOM

0

,除非只有一個孩子「UL」,該m = $(this).children("ul").css("display")會返回一個數組,所以在接下來的發言if (m == 'none')它可以打破。 你可能想要一個。每次有涉足的每個UL

+0

只有一個孩子。 –

0

使用這樣的:

$(".nav_button").hover(function(){ 
    m = $("ul").css("display"); 
    alert(m); 
    if (m == "none") { 
     $("ul").slideToggle(300);   
    } 
    else { 
     $("ul").slideToggle(300); 
    } 
}); 

觀看演示:http://jsfiddle.net/rathoreahsan/JAA9q/4/

,或者你可以使用這樣的:

$(".nav_button").hover(function(){ 
    m = $("#toggleUL").css("display"); 
    alert(m); 
    if (m == "none") { 
     $("#toggleUL").slideToggle(300);   
    } 
    else{ 
     $("#toggleUL").slideToggle(300); 
    } 
}); 

看演示:http://jsfiddle.net/rathoreahsan/JAA9q/7/

+0

這是完全錯誤的伴侶,並且不能在現實生活中應用。 –