gpt4 book ai didi

javascript - e.StopPropagation() 忽略重叠元素

转载 作者:行者123 更新时间:2023-12-03 12:19:06 25 4
gpt4 key购买 nike

我有一个鼠标悬停事件,该事件会在鼠标悬停的 div 顶部部分创建一个工具提示 div。

但是如果鼠标位于工具提示上,它会触发我的鼠标。我希望它忽略新创建的 div,这样它就不会触发鼠标移出,除非我将鼠标移出原始 div。所以我使用了 e.stopPropagation() 但它似乎没有解决问题。

这是我的代码:

function ToolTip(e,el,data)
{
e.stopPropagation(); //ignore other elements that overlap

var div = createDiv();
div.style.left = el.offsetLeft + 10 + 'px';
div.style.top = el.offsetTop + 10 + 'px';
div.className = 'ToolTip';
div.innerHTML = 'This is a tooltip!';
document.body.appendChild(div);

function removeToolTip()
{
el.removeEventListener('mouseout',removeToolTip,false);
removeDiv(div);
}

el.addEventListener('mouseout',removeToolTip,false);
}

div.addEventListener("mouseenter",function(e){ToolTip(e,this,data);},false);

我是否误解了e.stopPropagation()的使用?

我用脚本制作了一个jsfiddle: http://jsfiddle.net/Lc7t7/

最佳答案

据我了解,您试图阻止工具提示与光标交互,因为当它这样做时,它与工具提示所属的元素交互。您需要做的就是使工具提示对光标“不可见”。停止传播没有帮助,因为工具提示的父级不是工具提示元素,而是 <body>元素。

令人惊讶的是,这个问题的答案不是 JavaScript,而是 CSS。 CSS pointer-events property ,当设置为none时,使元素不与光标交互。 JavaScript 应该尊重这一点,并忽略您使用工具提示“将鼠标移出”元素的事实。不幸的是,浏览器支持是 lacking在许多浏览器的旧版本中,因此请记住这一点。

关于javascript - e.StopPropagation() 忽略重叠元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24523656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com