`
TXterran
  • 浏览: 16942 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

HTML div标签内部组件导致onmouseout事件调用问题

阅读更多
这几天一直纠结于一个html页面上的bug, 我们前台框架是ICEFaces3.1, 这些无所谓,翻译出来都是html标签
   问题表述: 情况是我的一个div里套了很多ul和li标签,我在这个外层的div里放了一个onmouseout鼠标事件,很简单的情况,然而在测试期间发现,当鼠标移动到这个div内部的任意元素上时,外层div的onmouseout事件竟然也被触发了,这个问题困扰了我已经有2天了,一直没有找到解决办法,昨天在网上搜了半天,发现其实有不少开源js框架里已经解决了这个问题。
   解决方案: 主要思想就是,将这个onmouseout事件触发的函数使用onmouseout调用并传入一个很短的时间,同时在这个div里加入一个onmouseover事件,在onmouseover时调用一个clearTimeout函数将它remove掉,即可解决。

   举例:

<div onmouseout="doSomethingDiv();" onmouseover="clearTime();">
//内部一大堆元素...
  <ul>
    <li>....</li>
  </ul>
</div>

面对这种div内部元素也会触发外部onmouseout动作的情况,需要添加一个setTimeout和clearTimeout方法,相当于在内部触发onmouseout事件之前便将它clear掉:
var t;
//在这里调用setTimeout方法让它在一段很短的时间后执行
function doSomethingDiv(){
   t = setTimeout('doSomeFunc()',400);
}

//将setTimeout事件remove掉
function clearTime(){
   clearTimeout(t);
}


效果不错,是个很聪明的办法.
分享到:
评论
2 楼 英雄败笔 2013-07-17  
这方法还是挺好的
1 楼 英雄败笔 2013-07-17  
解决方案: 主要思想就是,将这个onmouseout事件触发的函数使用onmouseout调用并传入一个很短的时间,同时在这个div里加入一个onmouseover事件,在onmouseover时调用一个clearTimeout函数将它remove掉,即可解决

这段描述就像高中时老师让读生涩的句子判断句意一样。

相关推荐

    js下关于onmouseout、事件冒泡的问题经验小结

    问题是这样的:一个div元素要触发onmouseout事件,同时这个div内部还有子元素,于是当鼠标移动到该div的子元素上时,onmouseout事件也被触发了。在要做浮动层效果的时候会经常遇到这个问题。 解决方法一: 使用...

    onmouseover事件和onmouseout事件全面理解

    最近两天在温习onmouseover事件和onmouseout事件,其实里面有很多深奥的知识,接下来小编给大家带来了onmouseover事件和onmouseout事件全面了解,感兴趣的朋友一起看下

    js下关于onmouseout、事件冒泡的问题经验小结.docx

    js下关于onmouseout、事件冒泡的问题经验小结.docx

    DIV的失去焦点(blur)实现方法

    直接使用onmouseout来实现移出消失可能会有一个问题:假设你的按钮的位置和弹出的div的位置不是重合的那么会导致鼠标移动就会马上去触发onmouseout事件,从而没什么卵用。 利用防抖、onmouseout、onmouseover组合来...

    图片onmouseover 和onmouseout 事件,根据图片不同大小显示不同大小的div,鼠标移上去显示该图片详细信息

    页面显示所有图片,当鼠标移到图片上显示该图片详细信息并且加样式

    js 阻止子元素响应父元素的onmouseout事件具体实现

    本文为大家介绍下js阻止子元素响应父元素的onmouseout事件,具体实现如下,感兴趣的朋友可以参考下

    js判断鼠标位置是否在某个div中的方法

    div的onmouseout事件让div消失时,会出现这样的情况,就是当鼠标移至div中的其它内容时,此时也判定为离开div,会触发 onmouseout事件,这样div中的内容就不能操作了。解决的办法是当触发onmouseout事件时,先判断...

    Html事件列表

    onMouseOut HTML: 当鼠标离开某对象范围时触发的事件 onKeyPress HTML: 当键盘上的某个键被按下并且释放时触发的事件.[注意:页面内必须有被聚焦的对象] onKeyDown HTML: 当键盘上某个按键被按下时触发的事件[注意:...

    javaScript常用事件

    2.onMouseOut:鼠标离开某对象范围时,触发事件调用函数。 3.onMouseMove: 鼠标移动到某对象范围的上方时,触发事件调用函数。注意:在同一个区域之内,只要一动一次就出发一次事件调用一次函数。 4.onmouseup 当鼠标...

    常用的HTML+CSS标签480个(带中文解释说明)

    浏览器兼容 leftmargin="0" topmargin="0" marginheight="0" marginwidth=...&lt;父标签&gt; div撑起来 -moz-background-size:cover; -webkit-background-size:cover; -o-background-size:cover; background-size:cover;

    onmouseover和onmouseout的一些问题思考

    一个DIV层,当鼠标移进的时候会触发onmouseover,移出的时候会触发onmouseout。 很简单的逻辑,这也是我们想要的!但随之烦恼也就来了:onmouseover并不会只在移进时才触发,onmouseout也不会只在移出时才触发!鼠标...

    javascript onmouseout 解决办法

    onmouseout 发现它的触发太敏感,当经过层内文字链时,即触发onmousetout事件,功能不能正常显示,经过一番搜索,整理出来,供大家参考。 1、 代码如下: [removed] function test(obj, e) { if (e.currentTarget) { ...

    javascript中onmouse事件在div中失效问题的解决方法

    我们预期只有当鼠标从div中移开的时候才会触发onmouseout事件,可事实上,当我们移到div中的元素时,例如:本例中的a标签时,就会触发 onmousout事件

    html鼠标事件整理

    个人整理的html所有的鼠标事件及方法:onblur 、onclick 、ondblclick 、onfocus 、onkeydown 、onkeypress 、onkeydown 、onKeyUp 、onmousedown 、onmousemove 、onmouseout 、onmouseover 、onmouseup ...

    HTML表单事件大全

    一般事件 ...onDblClick 鼠标双击事件 onMouseDown 鼠标上的按钮被按下了 onMouseUp 鼠标按下后,松开时...onMouseOut 当鼠标离开某对象范围时触发的事件 onKeyPress 当键盘上的某个键被按下并且释放时触发的事件.

    鼠标悬浮事件(onmouseover、onmouseout)

    鼠标移上去显示别的东西,离开恢复原样;通过传递参数实现此功能

    封装好了的JS选项卡

    绑定id="a1"下的td标签为菜单,绑定id="b1"下的div标签为内容,简单么? td标签的数量和div标签的数量必须相同 (若不需要显示内容,只显示菜单话,可以这个在td标签上加) 如果id="a1"下的td标签有嵌套表格,这样的...

    Java Web动态评星组件

    Java Web程序动态评星: 运用的技术:Ajax 异步请求、sevlet、JavaScript 描述:在页面打印出五角星,并获得鼠标onmouseover 和onmouseout 事件,在页面的JavaScript中调用XMLHttpRequest对象的属性及方法

Global site tag (gtag.js) - Google Analytics