- 浏览: 189671 次
- 性别:
- 来自: 四川
文章分类
- 全部博客 (131)
- CMS内容管理系统 (3)
- 支付宝实习之旅 (1)
- javaSE (5)
- myEclipse (1)
- DWR (0)
- strut2 (6)
- spring (4)
- hibernate (6)
- jquery (26)
- extjs (0)
- oracle (1)
- flex (10)
- ajax (0)
- jsp (3)
- java (4)
- JavaScript (4)
- css+div (5)
- Java面试 (3)
- java设计模式 (2)
- Think in java 笔记 (2)
- dom4j (1)
- JDBC (1)
- 经典方法学习 (1)
- windows常用操作 (1)
- maven (1)
- 75道经典逻辑题及答案 (1)
- mysql (3)
- jqueryDemo(插件) (3)
- php (14)
- ubuntu (6)
- 记事本 (1)
- php缓存 (1)
- 编程思想 (5)
- wamp (1)
- android (2)
- xml (1)
最新评论
-
coosummer:
推荐使用http://buttoncssgenerator.c ...
CSS按钮(研究) -
javaCrazy!:
监听一个keyup事件
jquery 监听input输入值事件 -
丶月满灬西楼彡:
问个问题:假如用户在Input中输入了“12345”,但后来又 ...
jquery 监听input输入值事件
解决HTML内部元素的Mouse事件干扰
话说有一个DIV元素,其内部有一个IMG元素和SPAN元素,不用理会这两个内部元素怎么布局,这不是我要讨论的重点。
为了实现一些特殊的效果,我需要利用TD的onmouseover和onmouseout事件,测试时就会发现如下的状况:
当鼠标移入DIV内部时,onmouseover事件被触发;接着再鼠标移动到DIV内部的IMG或者SPAN元素之上,我们肯定不会认为这时鼠标已经移到了DIV的外边,但奇怪的是onmouseout事件触发了,而且紧接着onmouseover事件也马上被触发了。
这可不是我想要的,那么怎么来“屏蔽”内部元素给外层元素带来的Javascript事件干扰呢?
这里列举两种方法:
一. setTimeout
因为在鼠标移动到内部元素之上而触发了外层元素的onmouseout事件后,外层元素的onmouseover也会马上触发,所以我们只需要把外层元素的onmouseout事件需要执行的动作延迟很短的一段时间来运行,然后在onmouseover事件中再执行clearTimeout方法,这样就可以避免内部元素引起的事件干扰。
具体的执行过程请看下图(纵向的虚线表示时间):
这是个很巧妙的的方法,因为当onmouseout触发后,实质性的方法并没有马上执行,而是要等待一小段时间。如果在这段时间里马上又触发了
onmouseover事件,那么基本上就可以肯定onmouseout事件的触发是因为内部元素的干扰了,所以在onmouseover事件中使用
clearTimeout来阻止延时的方法执行。
二.contains
在onmouseover时先进行如下判断,结果为true时再执行方法体:
if(!this.contains(event.fromElement)){MouseOverFunc()}
在onmouseout时先进行如下判断,结果为true时再执行方法体:
if(!this.contains(event.toElement)){MouseOutFunc()}
下面来解释一下上面两行代码的含义:
在IE中,所有的HTML元素都有一个contains方法,它的作用是判断当前元素内部是否包含指定的元素。我们利用这个方法来判断外层元素的事件是不是因为内部元素而被触发,如果内部元素导致了不需要的事件被触发,那我们就忽略这个事件。
event.fromElement指向触发onmouseover和onmouseout事件时鼠标离开的元素;event.toElement指向触发onmouseover和onmouseout事件时鼠标进入的元素。
那么上面两行代码的含义就分别是:
○
当触发onmouseover事件时,判断鼠标离开的元素是否是当前元素的内部元素,如果是,忽略此事件;
○
当触发onmouseout事件时,判断鼠标进入的元素是否是当前元素的内部元素,如果是,忽略此事件;
这样,内部元素就不会干扰外层元素的onmouseover和onmouseout事件了。
但问题又来了,非IE的浏览器并不支持contains函数,不过既然我们已经知道了contains函数的作用,就可以自行添加如下的代码来为非IE浏览器增加contains支持:
if(typeof(HTMLElement) != "undefined")
{
HTMLElement.prototype.contains = function(obj)
{
while(obj != null && typeof(obj.tagName) != "undefind")
{
if(obj == this)
Return true;
Obj =
obj.parentNode;
}
return false;
};
}
发表评论
-
jquery多函数执行
2014-01-07 15:33 9291、Array.prototype.slice.apply ... -
js关闭浏览器兼容性问题
2013-09-13 10:23 7671、ie,chrome下面代码都可以 window.ope ... -
jquery弹框插件(自定义easy-box)
2013-08-30 14:39 10021、插件代码easy-box.js $.ext ... -
50个jQuery代码段帮你成为更出色的JS开发者
2013-08-29 15:06 9050. 如何创建嵌套的过滤器: -
jquery验证插件进一步进行封装(easy-check)
2013-07-29 14:48 21961、easy-check.js,核心代码如下(要运行dem ... -
php echo jquery代码
2013-07-09 11:30 1491话不多少,直接贴上代码 echo "<sc ... -
用户图上传从本地加载图片,兼容ie6+,chrome,firefox
2012-11-24 17:26 817直接上代码 写道 <!DOCTYPE htm ... -
既可输入也可以选择的(input+select)兼容ie6+,chrome,firefox
2012-11-24 17:25 1203直接上代码 <html> <hea ... -
js或jquery导致ie6下,gif卡帧(不动)
2012-11-21 14:01 3118IE6下当JS触发GIF格式图片时,经常会出现GIF图片动几下 ... -
js解决IE遮罩层无法遮罩select
2012-11-07 15:23 9261、包含js (function(a){a.fn.bg ... -
div固定顶部或底部,IE下postion:fixed问题
2012-11-07 14:14 824像你所遇到的问题一样, IE6浏览器有太多的bug让制作 ... -
公告连续滚动js
2012-11-05 13:46 2147<!DOCTYPE html PUBLIC " ... -
jquery获取各种高度
2012-09-19 20:57 11543alert($(window).height()); ... -
jquery设置select选中,获取select选中的值 和文本
2012-09-11 17:03 1777选中select选项,根据value var pid ... -
jquery图片剪切(插件)
2012-09-09 12:28 1833我用过的jquery图片剪切插件有jcrop, imgsel ... -
jquery图片左右滚动,代码很简洁
2012-09-03 17:46 727<!DOCTYPE html PUBLIC &qu ... -
jquery 监听input输入值事件
2012-08-22 17:24 18478<html> <head&g ... -
jquery 可扩展滚动移动demo
2012-08-06 22:53 1039<!DOCTYPE html PUBLIC &qu ... -
jquery 设置select选中
2012-08-02 10:01 808jquery代码 $(document).rea ... -
jquery ajax之函数里面ajax请求,不能返回return 值
2012-07-31 21:45 2728代码 代码如下: fu ...
相关推荐
在本篇文章中,我们将探讨如何使用CSS和JavaScript来实现兼容IE和Firefox的鼠标经过效果(onmouseover和onmouseout)。在前端开发中,鼠标经过效果是一个非常常用的交互效果,然而不同的浏览器对其支持的方式不同,...
JavaScript 是一种广泛用于网页和网络应用的脚本语言,它在网页交互中扮演着重要角色,其中事件处理是其核心功能之一。事件是用户或浏览器对页面进行操作时触发的特定情况,例如点击按钮、滚动页面等。本文将详细...
本文将深入探讨两个常见的鼠标事件:`onmouseover`和`onmouseout`,以及它们在不同浏览器中的行为差异,以及如何解决由此引发的问题。 `onmouseover`事件会在鼠标指针进入一个元素时触发,包括进入该元素的任何子...
本篇文章将探讨如何实现一个简短的兼容IE和Firefox的鼠标经过事件(onmouseover和onmouseout)的解决方案。 首先,让我们了解这两个事件。`onmouseover`事件在鼠标指针进入一个元素时触发,而`onmouseout`事件则在...
- IE6并不支持CSS3,所以实现模糊效果可能需要用到像CSS Expression或者JavaScript的onMouseOver/onMouseOut事件来动态修改图片的样式。 3. onMouseOver与onMouseOut事件: - `onMouseOver`事件在鼠标指针进入...
在JavaScript(简称JS)中实现图片预览,尤其是在兼容老版本的Internet Explorer(如IE6、IE7、IE8)以及Firefox(FF)等浏览器上,需要考虑多种技术策略和兼容性问题。下面我们将详细讨论如何实现这个功能,并着重...
这种方法通过自定义 `mouseleave` 事件处理器来解决 `onmouseout` 事件过度触发的问题。其核心思想是在 `onmouseout` 事件触发时检查目标元素与鼠标移入的新元素之间的关系,只有当鼠标移入的元素不是目标元素的后代...
本文探讨了在使用JavaScript处理鼠标事件时,在div元素中可能会遇到的onmouseout事件失效的问题,并提供了兼容IE和Firefox两种浏览器的解决方案。在探讨之前,需要了解几个基础知识点: 1. JavaScript事件冒泡:当...
在JavaScript编程中,鼠标事件是非常重要的交互元素之一,它们允许开发者捕捉用户的鼠标动作,并根据这些动作触发相应的脚本处理。本文将详细介绍JavaScript中的各种鼠标事件及其特性,包括支持的浏览器版本等内容。...
### JS鼠标键盘触发函数大全知识点解析 #### 一、鼠标事件 鼠标事件是JavaScript中最常见的交互方式之一,它们主要用于响应用户的鼠标操作。 - **`onClick`**:当用户单击鼠标左键时触发。该事件通常用于处理点击...
在JavaScript代码中使用了attachEvent方法,这是因为IE6仅支持attachEvent用于添加事件监听器,而不支持标准的addEventListener方法。同时,代码中也使用了正则表达式来清理类名,确保在移除"stest"时不会影响到元素...
- **鼠标事件**:如`onclick`(点击)、`onmousedown`(鼠标按下)、`onmouseup`(鼠标释放)、`onmousemove`(鼠标移动)、`onmouseout`(鼠标离开元素)和`onmouseover`(鼠标进入元素)。 - **Event对象**:...
onMouseOver IE3|N2|O3 当鼠标移动到某对象范围的上方时触发的事件 onMouseMove IE4|N4|O 鼠标移动时触发的事件 onMouseOut IE4|N3|O3 当鼠标离开某对象范围时触发的事件 onKeyPress IE4|N4|O 当键盘上的某个键被按...
为了更好地理解和应用JS事件,本文将详细介绍JS中的各种事件及其应用场景。 #### 1. 鼠标事件 (Mouse Events) 鼠标事件是用户与网页交互时最常见的一类事件。它们主要涉及鼠标的各种操作,如点击、移动等。 - **...
本文档汇总了广泛使用的JavaScript事件及其触发条件,并提供了详细的解释,帮助开发者更好地理解和应用这些事件。 #### 二、鼠标事件 1. **`onClick`**:当用户点击一个元素时触发。 - 支持版本:IE3 | Netscape2...
### JS事件大全:深入解析与兼容性探讨 在前端开发领域,JavaScript事件处理是构建交互式用户界面的核心技术之一。本文旨在全面解析JavaScript中的各种事件类型及其对应的浏览器兼容性,帮助开发者更好地理解和应用...
### JS鼠标事件大全详解 JavaScript 是一种广泛应用于网页开发中的脚本语言,它能够通过处理各种事件来增强页面的交互性。其中,鼠标事件是非常重要的一部分,它们允许开发者响应用户的鼠标操作,比如点击、移动等...
在JavaScript中,事件处理程序一般以“on”开头,如onclick、onmouseover、onmouseout等。事件处理程序的命名约定帮助开发者快速识别出哪个函数负责处理哪种类型的事件。 接下来,我们来理解什么是事件冒泡和捕获。...
3. **onMouseDown(按下事件)**: - **描述**:当鼠标按钮被按下时触发。 - **示例用途**:可以用于实现拖拽功能。 - **兼容性**:IE4及以上版本、Netscape4及以上版本、Opera支持。 4. **onMouseUp(抬起事件...