栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

当悬停父绝对div的子元素而没有jQuery时,防止onmouseout

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

当悬停父绝对div的子元素而没有jQuery时,防止onmouseout

function onMouseOut(event) { //this is the original element the event handler was assigned to var e = event.toElement || event.relatedTarget; if (e.parentNode == this || e == this) {    return; }        alert('MouseOut');        // handle mouse event here!    }    document.getElementById('parent').addEventListener('mouseout',onMouseOut,true);

我制作了一个快速的JsFiddle演示,其中包含所有需要的CSS和HTML,请查看…

注意 ,这仅检查直接父级,如果父级div嵌套了子级,则您必须以某种方式遍历父级元素以寻找“原始元素”

*嵌套孩子的 *编辑 示例

编辑 固定为希望跨浏览器

function makeMouseOutFn(elem){    var list = traverseChildren(elem);    return function onMouseOut(event) {        var e = event.toElement || event.relatedTarget;        if (!!~list.indexOf(e)) { return;        }        alert('MouseOut');        // handle mouse event here!    };}//using closure to cache all child elementsvar parent = document.getElementById("parent");parent.addEventListener('mouseout',makeMouseOutFn(parent),true);//quick and dirty DFS children traversal, function traverseChildren(elem){    var children = [];    var q = [];    q.push(elem);    while (q.length > 0) {      var elem = q.pop();      children.push(elem);      pushAll(elem.children);    }    function pushAll(elemArray){      for(var i=0; i < elemArray.length; i++) {        q.push(elemArray[i]);      }    }    return children;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411410.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号