0

我有一个使用 jQuery 鼠标悬停延迟的 CSS 下拉菜单,以防止菜单显示用户是否只是将鼠标移动到页面上的另一个链接。

我的问题是 css hover 正在触发,这会在鼠标悬停时改变活动 li 的样式。

有没有办法阻止 CSS 悬停样式触发,除非达到 jQuery 例程中定义的悬停时间?(用户故意使用菜单)

我尝试使用 CSS 动画:和动画延迟:但无法使其正常工作,这就是我使用 jQuery 例程的原因。

代码示例在这里:http: //jsfiddle.net/2fc3W/7/

我的 CSS:

.pipe {
    margin-top:4px;
}
.li_hover {
    color: #002398;
}
.bottom_li {
    margin-bottom:6px;
    margin-top:2px;
}
ul#nav li .bottom_li:hover > a {
    background:#E0E0E0;
}
ul#nav, ul#nav ul {
    width:300px;
    list-style:none;
    margin:0;
    padding:0;
    position:absolute;
    z-index:9;
    border:1px solid #297BCE;
}
ul#nav li li:hover > a {
    border:none;
}
ul#nav li {
    position:relative;
    float:left;
    zoom:1;
    /*Needed for IE*/
}
ul#nav li:hover > a {
    background:#E0E0E0;
    color:#297BCE;
    border-left:1px solid #297BCE;
    border-right:1px solid #297BCE;
    border-top:1px solid #E0E0E0;
    border-bottom:1px solid #E0E0E0;
    text-decoration:underline;
}

#nav li.is-active > ul {
     display: block;   
}
ul#nav li a {
    border:1px solid #FFFFFF;
    display:block;
    padding:4px 6px 4px 6px;
    color:#297BCE;
    font-weight:bold;
    font-family:Arial, Times New Roman, Tahoma;
    font-size:13px;
    text-decoration:none;
}
ul#nav ul {
    padding-left:8px;
    padding-top:2px;
    display:none;
    position:absolute;
    width:150px;
    border:1px solid #297BCE;
    background:#E0E0E0;
    left:0;
    border-top:none;
}
ul#nav ul li {
    background:#E0E0E0;
    color:#000;
    border:none;
    float:none;
}
ul#nav ul li a {
    border:none;
    width:100%;
    padding:0;
    display:block;
    color:#000000;
    line-height:145%;
    font-size:12px;
    font-weight:normal;
}
ul#nav ul li a:hover {
    border:none;
    width:150px;
    color:#297BCE;
}
ul#nav ul ul {
    position: absolute;
    top: 0;
    left: 100%;
    margin-left:-3px;
    display: none;
}
ul#nav ul ul {
    padding-left:8px;
    position:absolute;
    width:150px;
    border:1px solid #297BCE;
    background:#E0E0E0;
}
ul#nav ul li:hover ul {
    display: block;
}
ul#nav ul.snug{
    width: auto;
}
ul#nav ul.snug li a{
    display: inline;
    padding-right: 6px;
    width: auto;
}

我的Javascript:

var hoverTimer = function ( menu ) {
    return setTimeout(function() {
        $(menu).addClass('is-active');
    }, 500);
},
    hover = null,
    $nav = $( '#nav > li' );

$nav.mouseenter(function() {
   hover = hoverTimer(this);
});

$nav.mouseleave(function() {
   clearTimeout(hover); 
   $nav.removeClass( 'is-active' );
});

我的 HTML:

<div id="menubar">
<ul id="nav">
 <li><a href="/ueber_uns.htm">About Us</a>
  <ul>
    <li><a href="#">Who We Are</a></li>
    <li><a href="#">Our Goals</a></li>
    <li><a href="#">Our Team</a></li>
    <li><a href="#">Press</a>
     <ul>
      <li><a href="#">2006</a></li>
      <li><a href="#">2007</a></li>
      <li><a href="#">2008</a></li>
     </ul>
    </li>
   <li><a href="#">Impressum</a></li>
   <li class="bottom_li"><a href="#"><span class="li_hover">See all</span></a></li>
  </ul>
 </li>
<li class="pipe">|</li>
 <li><a href="/ueber_uns.htm">About Us</a>
  <ul>
    <li><a href="#">Who We Are</a></li>
    <li><a href="#">Our Goals</a></li>
    <li><a href="#">Our Team</a></li>
    <li><a href="#">Press</a>
     <ul>
      <li><a href="#">2006</a></li>
      <li><a href="#">2007</a></li>
      <li><a href="#">2008</a></li>
     </ul>
    </li>
   <li><a href="#">Impressum</a></li>
   <li class="bottom_li"><a href="#"><span class="li_hover">See all</span></a></li>
  </ul>
 </li>
<li class="pipe">|</li>
 <li><a href="/ueber_uns.htm">About Us</a>
  <ul>
    <li><a href="#">Who We Are</a></li>
    <li><a href="#">Our Goals</a></li>
    <li><a href="#">Our Team</a></li>
    <li><a href="#">Press</a>
     <ul>
      <li><a href="#">2006</a></li>
      <li><a href="#">2007</a></li>
      <li><a href="#">2008</a></li>
     </ul>
    </li>
   <li><a href="#">Impressum</a></li>
   <li class="bottom_li"><a href="#"><span class="li_hover">See all</span></a></li>
  </ul>
 </li>
</ul>
</div>

感谢您提供指导我正确方向的任何建议。

4

1 回答 1

2

尝试将您的活动课程添加到您的 CSS 中,例如:

ul#nav li.is-active:hover > a {
    background:#E0E0E0;
    color:#297BCE;
    border-left:1px solid #297BCE;
    border-right:1px solid #297BCE;
    border-top:1px solid #E0E0E0;
    border-bottom:1px solid #E0E0E0;
    text-decoration:underline;
}

#nav li.is-active > ul {
     display: block;   
}

ul#nav ul li.is-active a:hover {
    border:none;
    width:150px;
    color:#297BCE;
}

ul#nav ul li.is-active:hover ul {
    display: block;
}

在这里提琴

于 2013-03-09T17:47:54.103 回答