2014-01-06 50 views
1

我有一個Wordpress網站,我試圖用子菜單添加一個jQuery菜單。下拉彈跳問題

這裏是jQuery的:

$(document).ready(function(){ 
    $('.menu > li').hover(function(){ 
     var position = $(this).position(); 
     $('.sub-menu', this).css('margin-left', position.left); 
     $('.sub-menu', this).slideToggle('slow'); 
    }); 
}); 

我有它設置上的jsfiddle還有:http://jsfiddle.net/K96mB/

的問題是,如果你將鼠標懸停在鏈接,子菜單滑動取出再並再次創造「反彈效應」。我一直試圖擺脫這一點,但無法弄清楚如何。

此外,是否有可能永遠不會有兩個下拉菜單同時打開?

感謝您的幫助。

回答

1

這個工作沒有彈跳效果:

$(document).ready(function(){ 
$('.menu > li').mouseenter(function(e){ 
    var position = $(this).position(); 
    $('.sub-menu', this).css('margin-left', position.left); 
    $('.sub-menu', this).slideToggle('slow') 

    }); 
}); 

我使用的mouseenter代替懸停

此外,是否有可能永遠不會有兩個下拉菜單在同一時間開放? 是,添加以下代碼:

$('li').mouseleave(function(e){ 
    $('.sub-menu').hide() 
}); 
2

爲了解決這個「反彈」的問題:

$('.sub-menu', this).stop().slideToggle('slow'); 

http://jsfiddle.net/DerekL/K96mB/1/

而且你說你不想兩個下拉菜單在同一時間開放,這是可以做到的,但我不要以爲你想要這樣做,因爲第二個菜單必須等待第一個菜單關閉然後打開(滯後)。

1

你可以做到這一點使用mouseentermouseleave。請參閱this jsfiddle(您的更新)。

相關部分:

$('.menu > li').mouseenter(function(){ 
     .... 
}); 

$('.sub-menu').mouseleave(function(){ 
     .... 
});