2012-04-06 134 views
1

你好朋友我設計了一個下拉菜單,使用jQuery中的mouseeneter()和mouseout()。問題是當我從主菜單中選擇mouseout()時,下拉鍊接向上滑動。我不知道如何設置條件,請幫忙。 我的代碼是jquery中的下拉菜單

jQuery的

<script> 
$(document).ready(function(){ 
    //alert('hi'); 
    $('#link-detail').css('display','none'); 
    $('#hover-detail').mouseenter(function(){ 
     $('#link-detail').css({position:'absolute',top:'20px',left:'0px',zindex:'99999'}); 
     $('#link-detail').slideDown(); 
     }); 
     $('#hover-detail').mouseout(function(){ 
     $('#link-detail').slideUp(); 
     }); 

    }) 
</script> 

HTML

<div class="link-detail-wrap"><div id="hover-detail">hover me</div> 
<div> 
    <ul id="link-detail"> 
    <li><a href="#">link 1</a></li> 
    <li><a href="#">link 1</a></li> 
    <li><a href="#">link 1</a></li> 
    <li><a href="#">link 1</a></li> 
    <li><a href="#">link 1</a></li> 
    </ul> 
</div></div> 
<div>hihihih</div> 

CSS

.link-detail-wrap 
{ 
    float:left; 
    width:100%; 
    position:relative; 
    } 

ul#link-detail 
{ 
    margin:0; 
    padding:0; 
    border:solid 1px #666; 
    border-bottom:none; 

    } 
ul#link-detail li 
{ 
    list-style:none; 
    margin:0; 
    padding:0; 
    display:inline; 

    } 
ul#link-detail li a 
{ 
    text-decoration:none; 
    color:#333; 
    padding:2px 50px 2px 10px; 
    background:#F0F0F0; 
    border-bottom:1px solid #666; 
    /*line-height:25px;*/ 
    font:12px "Trebuchet MS", Arial, Helvetica, sans-serif; 
    text-transform:capitalize; 
    display:block; 
    } 
ul#link-detail li a:hover 
{ 
    background:#CCC; 
    } 

你也可以看到它在http://jsfiddle.net/36CXK/

PL EASE HELP

在此先感謝

+0

看看我的答案:) – Alexander 2012-04-06 11:37:29

回答

1

使用這個腳本在腳本區域

<script type="text/javascript"> 
$(document).ready(function(){ 
     //alert('hi'); 
     $('#link-detail').css('display','none'); 


      $("#hover-detail").hover(
    function() { 
    $('#link-detail').css({position:'absolute',top:'20px',left:'0px',zindex:'99999'}); 
      $('#link-detail').slideDown(); 
    }, 
    function() { 
    // do nothing 
    } 
); 

$(".relation").hover(
    function() { 
    // do nothing 
    }, 
    function() { 
    $('#link-detail').slideUp(); 
    } 
); 
}) 
</script> 

和額外的CSS類創建它使用的是超時具有一定的延遲上向上滑動菜單做

.relation { 
    position:relative; 
    top:-20px; 
} 
+0

在哪裏應用類關係...你會請分享它在小提琴 – Kamal 2012-04-06 11:20:18

+0

關係類使用在「ul」div 這裏是更新的代碼 - ' http:// jsfiddle.net/36CXK/10 /' – 2012-04-06 11:28:10

0

只是註釋掉$('#link-detail').slideUp();線。

在這裏看到:

http://jsfiddle.net/36CXK/1/

+0

感謝您的幫助斯蒂芬...你是對的,但我希望當mouseout()從所有的下拉鍊接應該關閉 – Kamal 2012-04-06 11:02:46

+0

@Stephen楊,你沒有得到它。 – Alexander 2012-04-06 11:02:46

+0

@Kamal在這種情況下只需添加'$('#link-detail').css('display','none');'到你的鼠標移出功能。在這裏:http://jsfiddle.net/36CXK/7/ – 2012-04-06 11:05:23

0
1

的一種方式老鼠離開。每次您將鼠標懸停在菜單上時都可以清除此超時,以防止動畫發生。

我創建一個對象Dropdown控制超時:

var Dropdown = { 
    timer: 0, 
    hide: function(callback, delay){ 
     this.timer = setTimeout(function() { 
      return callback.call(this, arguments); 
     }, delay); 
    }, 
    reset: function(){ 
     this.timer && clearTimeout(this.timer); 
    } 
}; 

而且你可以重構你的代碼,使這使用:

$('#link-detail').css('display', 'none'); 

$('#hover-detail').hover(function() { 
    Dropdown.reset(); 
    $('#link-detail').css({ 
     position: 'absolute', 
     top: '20px', 
     left: '0px', 
     zindex: '99999' 
    }); 
    $('#link-detail').slideDown(); 
}, function() { 
    Dropdown.hide(function(){ 
     $('#link-detail').slideUp(); 
    }, 200); 
}); 

$('#link-detail').hover(function() { 
    Dropdown.reset(); 
}, function(){ 
    Dropdown.hide(function(){ 
     $('#link-detail').slideUp(); 
    }, 200); 
}); 

這是a working fiddle

+0

你真棒謝謝你的幫助.. :) – Kamal 2012-04-06 12:04:12