Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE中的嵌套span鼠标悬停问题_Javascript_Html_Css_Internet Explorer_Javascript Events - Fatal编程技术网

Javascript IE中的嵌套span鼠标悬停问题

Javascript IE中的嵌套span鼠标悬停问题,javascript,html,css,internet-explorer,javascript-events,Javascript,Html,Css,Internet Explorer,Javascript Events,我有嵌套的span元素,并且父span有mouseover和mouseout事件 <span id='parent' onmouseover='showChild()' onmouseout='hideChild()'> <span id='child'></span> </span> 我在mouseover上显示childspan,在parentspan上显示childspan,并从parent将其隐藏在mouseout上 这一切在

我有嵌套的span元素,并且父span有
mouseover
mouseout
事件

<span id='parent' onmouseover='showChild()' onmouseout='hideChild()'>
    <span id='child'></span>
</span>

我在
mouseover上显示
child
span,在
parent
span上显示
child
span,并从
parent
将其隐藏在
mouseout

这一切在firefox和chrome中都可以正常工作,但在IE中,一旦鼠标移动到子元素上,IE就会将其视为从父元素移出的鼠标,从而隐藏子元素

对于IE,有什么解决方法或正确的方法吗


我可以在子span中放置相同的事件,这在IE中也应该可以,但这样做是否正确?

使用css从父div中删除指针事件:

#parent * {
     pointer-events: none;
}

您可能可以使用
onmouseleave
而不是
onmouseout
来解决此问题:

<span id='parent' onmouseover='showChild()' onmouseleave='hideChild()'>
    <span id='child'></span>
</span>

看看这个。打开控制台获取输出。

在这种情况下,您只需使用检查事件目标是否不是子事件

这是一个工作片段:

函数showChild(e){
e=e | | window.event;
var child=document.getElementById(“child”);
如果(例如,目标!==子对象){
child.style.display=“内联块”;
}
}
功能hideChild(e){
e=e | | window.event;
var child=document.getElementById(“child”);
如果(例如,目标!==子对象){
child.style.display=“无”;
}
}
#父级{
背景颜色:黄色;
宽度:300px;
显示:块;
高度:100px;
}
#孩子{
背景:蓝色;
颜色:白色;
宽度:自动;
高度:自动;
}
Parent
小孩
找到了解决方法

我将父span替换为
div
display:inline块
,现在它在任何地方都能工作


谢谢

你能为此创建一个提琴吗?这只适用于IE11,因为他在IE上有问题。奇怪的是,你的解决方案在提琴上工作,但当我在我的代码中尝试它时,它仍然不工作:(奇怪。你在IE的哪个版本上尝试这个?IE11。但是我找到了解决方法。我发布了我的答案。谢谢!:)很好!您是否仍然使用了
onmouseleave
onmouseout
<span id='parent' onmouseenter='showChild()' onmouseleave='hideChild()'>
    <span id='child'></span>
</span>