鼠标滑过下拉菜单抖动的问题 slideup/slidedown() 抖动问题

<script type="text/javascript">
  $(‘li‘).children(‘dl‘).css({‘margin‘: ‘0‘,‘display‘ :‘none‘})
  $(‘li‘).mouseover(function(){
    $(this).children(‘dl‘).slideDown();
  });
  $(‘li‘).mouseout(function(){
    $(this).children(‘dl‘).slideUp();
  });
</script>

当a标签没有display:block的情况下(主要是看a标签又没有占满li宽度和高度,因为mouse事件是给li的),当放到a标签的时候下拉菜单slideDown两次,中间有一次slideUp;若鼠标横向移动离开a标签但是没有移除li标签的范围;下拉菜单发生一次sildeUp和一次slideDown;当鼠标下移,移到下拉菜单上的时候,下拉菜单会无限次的slideDown与silideUp;

当a标签display:block时,a标签占满了li的宽度,鼠标放到a上时下拉菜单一次sildeDown(正常效果);鼠标下移到下拉菜单上时,下拉菜单还是会无限次的slideDown与silideUp;

多次发生slideDown与sildeUp的情况主要是因为 mouse事件问题:

mouseover与mouseenter

  不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。

  只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。

mouseout与mouseleave

  不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。

  只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。

触发事件的顺序:li标签的mouseout→slideUp一次;

                    slideUp是个过程需要时间,但是mouseout与mouseover瞬间发生;下拉菜单还没有sildeUp完成鼠标已经触发了下拉菜单的mouseover;

                    下拉菜单的mouseover→slideDown一次;

                    就这样事件多次被触发(火狐下是无限触发);

解决:可以用jq的stop方法阻止动画;写法简单;

        2:可以从事件触发的角度解决。

$(this).children(‘dl‘).stop(true).slideDown();$(this).children(‘dl‘).stop(true).slideUp();

时间: 2024-08-27 12:30:04

鼠标滑过下拉菜单抖动的问题 slideup/slidedown() 抖动问题的相关文章

鼠标经过自动下拉菜单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

实现Bootstrap导航条可点击和鼠标悬停显示下拉菜单

使用Bootstrap导航条组件时,如果你的导航条带有下拉菜单,那么这个带下拉菜单的导航在点击时只会浮出下拉菜单,它本身的href属性会失效,也就是失去了超链接功能,这并不是我想要的,我希望导航条的链接可以正常打开它的链接,但又需要下拉菜单功能,开始折腾~ 首先解决带下拉菜单的导航条可以点击问题,下拉菜单效果是JS实现的,分析bootstrap.js文件发现,Bootstrap把下拉菜单写成了一个JQuery插件,在dropdown代码段中找到了关键的几句: // APPLY TO STANDA

bootstrap 导航栏鼠标悬停显示下拉菜单

在jsp中加入一下代码: .navbar .nav > li:hover .dropdown-menu { display: block;} 全部代码如下所示: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4

鼠标悬浮,下拉菜单,距离一定距离

<!DOCTYPE HTML PUBLIC "-//W3C//DTD xHTML 1.0 Transitional//EN"><HTML> <HEAD> <TITLE>news</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <META NAME="Au

1.鼠标点击换样式+2.下拉菜单缓慢显示/隐藏样式效果

1.鼠标点击换样式 <style type="text/css"> .aa{ width:90px; height:60px;text-align:center; vertical-align:middle; line-height:60px; margin-right:10px; font-size:19px; float:left; background-color:#06F} </style> <body> <div style=&quo

用纯css实现下拉菜单的几种方式

第一种:display:none和display:block切换 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 ul{ 8 list-style: none; 9 } 10 .nav>li{ 11 float

仿新浪下拉菜单

要求 仿新浪网,鼠标移入显示下拉菜单,鼠标移出隐藏下拉菜单,具体表现如下图: 代码 <ul> <li id="top">微博</li> <li class="hide">私信</li> <li class="hide">评论</li> <li class="hide">@我</li> </ul> <sc

bootstrap怎么设置下拉菜单不点击,改成鼠标悬停直接显示下拉菜单

方法一: 实际上比较简单,只需要加一个css设置下hover的状态,把下拉菜单设置成block,具体css:.nav > li:hover .dropdown-menu {display: block;} 但是主导航失去链接的效果! 方法二: 不仅可以解决Bootstrap鼠标悬停的问题,还可以让一个菜单恢复链接实现点击下拉菜单效果是JS实现的,分析bootstrap.js文件发现,Bootstrap把下拉菜单写成了一个JQuery插件,在dropdown代码段中找到了关键的几句:$(docum

鼠标经过时弹出下拉菜单

<style type="text/css">#cssdropdown, #cssdropdown ul {padding: 0;margin: 0;list-style: none;}#cssdropdown li {float: left;position: relative;}.mainitems{border: 1px solid black;background-color: #FFEEC6;}.mainitems a{margin-left: 6px;margi