2012-04-06 164 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