`
TXterran
  • 浏览: 17125 次
  • 性别: 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掉,即可解决

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

相关推荐

    HTML Component(HTC)简介.pdf

    1. **定义事件响应**:在HTC文件中,你可以定义事件监听器,比如`&lt;PUBLIC:ATTACH&gt;`标签,用于绑定事件(如`onmouseover`, `onmouseout`, `onmousedown`, `onmouseup`)到相应的处理函数(如`glowit()`, `noglow()`, ...

    Jquery AutoComplete组件+Ajax实现搜索框输入提示功能小记

    ### Jquery AutoComplete组件+Ajax实现...4. **事件绑定与Ajax调用**: - 使用keyup事件监听用户输入。 - 通过Ajax发送请求到后端处理程序。 - 处理后端返回的数据,并显示在页面上。 ```html &lt;!-- 引入jQuery --&gt; ...

    用ASP.NET AJAX框架扩展HTML Map控件

    这些事件可以调用服务器端的方法,通过AJAX请求发送数据,并接收响应,从而实现实时更新和交互。 4. **服务器端逻辑**:在服务器端,编写处理AJAX请求的代码,这通常涉及后端数据的查询或修改,以及返回JSON格式的...

    javascript实现动态侧边栏代码.docx

    为了让侧边栏在鼠标悬停时显示,我们使用 JavaScript 监听 `onmouseover` 和 `onmouseout` 事件。当鼠标进入 `div1` 时,调用 `startmove` 函数,使侧边栏向右移动;当鼠标离开时,调用 `startmove` 函数,让侧边栏...

    JS图片自动翻页多张图片自动播放

    根据题目中给出的部分内容,可以看出HTML部分定义了一个包含多个`&lt;div&gt;`元素的容器,每个`&lt;div&gt;`内部嵌套了一个链接和一张图片。这些`&lt;div&gt;`被设置为不同的显示状态(`display: block`或`display: none`),从而控制...

    网页制作图片转换效果

    关键的图片转换效果在于HTML结构,特别是`&lt;table&gt;`元素及其内部的`&lt;div&gt;`。每个`&lt;div&gt;`元素都包含一个`&lt;a&gt;`链接和一个`&lt;img&gt;`图片,其中图片的高度和宽度被固定,并通过CSS的`display`属性控制其显示与隐藏。在初始...

    JS滚动字幕

    3. **添加事件监听**:为`marquees`添加`onmouseover`和`onmouseout`事件,用于控制滚动的启停,增强用户体验。 4. **初始化滚动内容**:通过创建一个不可见的临时层`templayer`,复制原始内容至其中,直至其高度...

    vue+高德地图实现地图搜索及点击定位操作

    在Vue组件的`&lt;script&gt;`部分,我们需要定义组件的属性和方法。`address`用于存储当前输入的地址,`map1`和`map`用来保存地图对象和经纬度信息,`poiArr`用于存储搜索结果,`windowsArr`和`marker`分别用于管理信息...

    vue项目中自定义video视频控制条的实现代码

    视频元素`&lt;video&gt;`需要绑定事件处理器,如`onMouseOver`和`onMouseOut`,以及`muted`属性以默认静音,并设置`loop`属性为循环播放。同时,创建一个进度条组件,这里使用了Element UI的`&lt;el-slider&gt;`。 ```html &lt;div...

    网站图片无缝滚动大全

    同时,随着前端框架如React、Vue和Angular的流行,无缝滚动也可以通过这些框架的插件或组件来实现,提供更丰富的功能和更好的性能。 总结来说,图片无缝滚动是通过JavaScript实现的一种网页动态效果,它通过巧妙的...

    Vrumm_klikk_web

    理解HTML的基本标签如`&lt;head&gt;`(用于设置页面元数据)、`&lt;body&gt;`(包含页面可见内容)、`~&lt;h6&gt;`(标题标签)、`&lt;p&gt;`(段落)、`&lt;a&gt;`(超链接)、`&lt;img&gt;`(图像)和`&lt;div&gt;`(布局容器)至关重要。 【CSS样式控制】 ...

    JS实现电脑虚拟键盘的操作

    在这个过程中,可能会用到一些事件处理函数,如onmouseover、onmouseout、onclick等。 综上所述,实现一个功能完整的电脑虚拟键盘涉及到HTML页面结构布局、CSS样式设计以及JavaScript交互逻辑的编写。在布局方面,...

    JS动态图片的实现方法完整示例

    HTML部分,定义了一个`&lt;div&gt;`(ID为`showdiv`)作为图片显示区域,内含一个表格`&lt;table&gt;`,表格中有两行`&lt;tr&gt;`,第一行包含一个单元格`&lt;td&gt;`,显示大图`&lt;img&gt;`(ID为`big`),第二行包含四个单元格,每个单元格显示...

    利用js 进行输入框自动匹配字符的小例子

    输入框`#word`通过`onkeyup`事件监听用户的键盘输入,当用户按键时调用`checkword()`函数。`#showmenu`是用于显示匹配字符列表的div,初始状态为隐藏。 JavaScript部分是实现自动匹配的关键: ```javascript ...

    vue如何集成raphael.js中国地图的方法示例

    7. **事件处理**:为每个省份图形绑定`onmouseover`、`onmouseout`和`onclick`事件,实现图形的高亮和点击反馈。 8. **数据绑定**:如果需要动态展示统计数据,可以通过Vue的数据绑定将省份数据与图形关联,实现在...

    JS实现的一个简单的Autocomplete自动完成例子

    - **交互反馈**:通过`onmouseover`和`onmouseout`事件,改变鼠标悬停在建议项上时的样式,增强用户体验。 - **选择事件**:当用户选择一个建议项时,调用`setValue`方法,将选中的值设置到输入框中,并隐藏建议...

    JS+CSS实现另类带提示效果的竖向导航菜单

    HTML结构包括一个ID为`coolmenu`的`div`元素,其中包含多个链接`a`元素,每个链接都有`onMouseover`和`onMouseout`事件,分别调用`showtext`和`hidetext`函数。`#tabledescription`元素用于存放提示文本。 **运行...

    原生js实现无限循环轮播图效果

    为此,我们可以为轮播图的外层容器添加`onmouseover`和`onmouseout`事件监听器。 以下是一个简化的示例代码: ```html &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; 无限循环轮播图 &lt;!-- CSS样式省略 --&gt; &lt;!-- 轮播...

Global site tag (gtag.js) - Google Analytics