`
wx1568844008
  • 浏览: 5498 次
文章分类
社区版块
存档分类
最新评论

JS中子元素的oumouseover触发父元素onmouseout -很像继承

 
阅读更多

1、什么叫事件对象?

  • 可以获取事件对象的一系列属性,在事件中写一个参数,即可通过参数获取。代码如下(wrap是一个对象):
wrap.onmouseover = function(e) {
 e = window.event || e;        // window.event是为了兼容ie下获取事件对象,而e为标准浏览器直接获取
 }

2、事件对象的相关对象

在触发onmouseover及onmouseout时,必定会涉及到其它对象,如:onmouseover的相关对象,即为哪个对象进入的。onmouseout的相关对象即为进入到哪个对象。获取方法如下(wrap是一个对象):

wrap.onmouseover = function(e) {
     e = window.event || e;
     var s = e.fromElement || e.relatedTarget;    //e.fromElement为IE下onmouseover获取相关对象方法,relatedTarget为标准浏览器下获取方法
 }
 wrap.onmouseout = function(e) {
     e = window.event || e;
     var s = e.toElement || e.relatedTarget;        //e.toElementIE下onmouseout获取相关对象方法,relatedTarget为标准浏览器下获取方法
 }

3、判断一个元素是否包含另一个元素

IE下可以使用a.contains(b)判断a是否包含b

标准浏览器下a.compareDocumentPosition(b)有5个值,若为0表示为同一节点,若为2表示a位于b后面,若为4表示a位于b前面,若为10表示a为b的后代,若为20表示a为b的祖级。

兼容写法:

function contains (a,b) {
    if (a.contains(b)) {
        a.contains(b);
    }else{
        a.compareDocumentPosition(b);
    }
}

当触发onmouseover时,可能是从对象以外移入的,也有可能是父级移入到子级,以及子级移出到父级,刚才也说过,onmouseover的相关对象是获取从哪个对象进入的。如果是从外面的对象进入的,我们就执行所需的代码。如果是从父级移入到子级或是由子级移出到父级时,则直接跳过。

wrap.onmouseover = function(e) {
     e = window.event || e;
     var s = e.fromElement || e.relatedTarget;
     if (document.all) {    //判断浏览器是否为IE,如果存在document.all则为IE
         if (!this.contains(s)) {    // 判断调用onmouseover的对象(this)是否包含自身或子级,如果包含,则不执行
             console.log('IE will over');
        }    
     } else {    //标准浏览器下的方法
         var reg = this.compareDocumentPosition(s);
         if (!(reg == 20 || reg == 0)) {
             console.log('Browser will over');
         }
     }
 }

当触发onmouseout时,可能是从父级移到子级,也可能由子级移到父级,或是移出至父级之外。

父级称到子级,则相关对象为子级,子级称到父级,则相关对象为父级。

代码如下:

wrap.onmouseout = function(e) {
     e = window.event || e;
     var s = e.toElement || e.relatedTarget;
     if(document.all) {
         if (!this.contains(s)) {
             console.log('IE will out');
        }
     } else {
         var reg = this.compareDocumentPosition(s);
         if (!(reg == 20 || reg == 0)) {
             console.log('Browser will out');
         }
     }
 }

问题得到了解决。

以上有什么不懂的可以给我发消息,我会第一时间回复的!

转载于:https://my.oschina.net/u/3341316/blog/856132

分享到:
评论

相关推荐

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

    但在一些场景下,我们需要在鼠标从子元素移出到父元素时不触发父元素的onmouseout事件,以避免不必要的响应。 在文档中提到的场景,就是要实现阻止子元素的onmouseout事件触发父元素的onmouseout事件。具体实现方法...

    js触发事件大全

    - onmouseout:鼠标指针离开元素区域时触发。 2. 键盘事件: - onkeypress:用户按下并释放一个键时触发,通常与字符输入有关。 - onkeydown:用户按下键盘上的键时触发。 - onkeyup:用户释放键盘上的键时触发...

    js事件触发大全

    - **`onmouseout`**: 鼠标离开元素时触发。 - **`onmouseover`**: 鼠标进入元素时触发。 - **`onmouseup`**: 用户释放鼠标按钮时触发。 - **`onmousewheel`**: 用户滚动鼠标滚轮时触发。 #### 4. 键盘事件 - **`...

    Java struts html 标签

    - **Onmouseout**: 鼠标移出文本框时触发的JavaScript函数。 - **Onmouseover**: 鼠标移入文本框时触发的JavaScript函数。 - **Onmouseup**: 鼠标左键释放时触发的JavaScript函数。 #### 四、`<html:button>` 标签 ...

    javascript事件列表解说

    - `onmouseout`:当鼠标指针离开元素范围时触发。 2. **键盘事件**: - `onkeypress`:在键盘按键被按下并释放时触发。 - `onkeydown`:当键盘按键被按下时触发。 - `onkeyup`:当键盘按键被释放时触发。 3. *...

    JS鼠标键盘触发函数大全

    ### JS鼠标键盘触发函数大全知识点解析 #### 一、鼠标事件 鼠标事件是JavaScript中最常见的交互方式之一,它们主要用于响应用户的鼠标操作。 - **`onClick`**:当用户单击鼠标左键时触发。该事件通常用于处理点击...

    HTML控件事件一览表

    - **`onmouseout`**:鼠标离开元素时触发。 - **`onmouseenter`**:鼠标进入元素时触发(不包括子元素)。 - **`onmouseleave`**:鼠标离开元素时触发(不包括子元素)。 - **`oncontextmenu`**:用户右键点击时触发...

    js鼠标事件大全(事件说明)

    ### JS鼠标事件大全详解 JavaScript 是一种广泛应用于网页开发中的脚本语言,它能够通过处理各种事件来增强页面的交互性。其中,鼠标事件是非常重要的一部分,它们允许开发者响应用户的鼠标操作,比如点击、移动等...

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

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

    JS事件大全

    - `onMouseOut`:鼠标指针离开元素范围时触发。 2. **键盘事件**: - `onKeyPress`:用户按下并释放一个键时触发,通常用于处理字符输入。 - `onKeyDown`:用户按下任意键时触发,可用于检测特定键的按下。 - `...

    js鼠标事件大全js鼠标事件大全

    JavaScript(简称JS)鼠标事件是网页交互中常用的一类事件,它们允许开发者在用户与页面上的元素进行鼠标操作时执行特定的功能。以下是一些主要的JS鼠标事件及其详细解释: 1. onClick:当用户单击鼠标按钮并在同一...

    js事件大全汇总111

    7. **`onMouseOut`**:当鼠标离开一个元素时触发。 - 支持版本:IE4 | Netscape3 | Opera3 - 描述:当鼠标光标移出元素边界时触发此事件。 #### 三、键盘事件 8. **`onKeyPress`**:当键盘上的一个键被按下时...

    javascript鼠标事件大全

    3. **`onmouseout`**:当鼠标指针离开某个元素时触发。 - 支持浏览器:IE4、Netscape 3、Opera 3。 #### 键盘事件 虽然键盘事件不是直接由鼠标触发的,但它们通常与鼠标事件一起被用于实现更复杂的用户交互。 1. *...

    JavaScript详细事件列表

    - **`onmouseout`**:当鼠标指针离开元素时触发。 ##### 2. 键盘事件 - **`onkeypress`**:当用户按下并释放键盘上的某个字符键时触发。 - **`onkeydown`**:当用户按下键盘上的某个键时触发。 - **`onkeyup`**:当...

    JavaScript事件详解

    - `onmouseout`: 鼠标离开元素区域时触发。 - `onkeypress`: 用户按下并释放键盘上的键时触发。 - `onkeydown`: 用户按下键盘上的键时触发。 - `onkeyup`: 用户释放键盘上的键时触发。 ### 2. 页面相关事件 - `...

    JavaScript事件大全

    - `onmouseout`:鼠标离开元素范围时触发。 2. 键盘事件: - `onkeypress`:当用户按下并释放一个键时触发,通常用于检测字符输入。 - `onkeydown`:用户按下键盘上的键时触发,可用于检测特殊键如箭头键、功能...

Global site tag (gtag.js) - Google Analytics