Javascript-div内部div问题

Javascript-div内部div问题,javascript,html,Javascript,Html,当鼠标移出id1时,我需要执行hideall()函数。使用下面的代码,它会正确调用hideall(),但当鼠标移出id2时,它会再次调用它 <div id="id1" onmouseout="hideall();" style="border:1px solid red;"> <div id="id2">This is inside id1 div</div> </div> 这是在id1分区内 在Internet Expl

当鼠标移出
id1
时,我需要执行
hideall()
函数。使用下面的代码,它会正确调用
hideall()
,但当鼠标移出
id2
时,它会再次调用它

<div id="id1" onmouseout="hideall();" style="border:1px solid red;">
          <div id="id2">This is inside id1 div</div>
</div>

这是在id1分区内

在Internet Explorer中有一个名为“鼠标离开”的专有事件,我相信这正是您想要的。不幸的是,这在所有浏览器中都不起作用。我建议您使用像jQuery这样的javascript库。它内置了事件。有关详细信息,请参阅。因此,您可能会寻找以下内容:

<div id="id1" style="border:1px solid red;">
      <div id="id2">This is inside id1 div</div>
</div>
<script>
$(document).ready(function() {
    $('#id1').mouseleave(function() {
        hideAll();
        // Or whatever else you want to do when the mouse leaves the element.
    });
});
</script>

这是在id1分区内
$(文档).ready(函数(){
$('#id1').mouseleave(函数(){
希德尔();
//或者鼠标离开元素时要执行的任何操作。
});
});

改编我的另一个答案:


这是在id1分区内
函数showTarget(目标、状态){
开关(状态){
案例1:
状态='块';
打破
违约:
状态='无';
}
console.log(状态);
document.getElementById(目标).style.display=state;
}

我认为只有当鼠标从一个地方移动到另一个地方时,才会发生mouseout事件。如果我理解正确的话,当鼠标位于id1中并移动到id1之外时,应该调用代码中的hideall()。您是否声称当鼠标从id1(但不是id2)->id2移动时,hideall()也被错误触发?或者当它从id2->outside_id2移动时?当我从id1>id2和id1>body移动鼠标时,调用hideall()函数。我需要在id1>body而不是id1>ID2时调用hideall()函数。我看到了一个非常类似的问题:
<div id="id1" onmouseout="showTarget('id1',0);" onmouseover="showTarget('id1',1);" style="border:1px solid red; width: 150px; height: 100px">
 <div id="id2" onmouseover="showTarget('id1',1);" onmouseout="showTarget('id1',1);" style="background-color: red; color: white; width: 100px; height: 75px;">This is inside id1 div</div>
</div>

function showTarget(target, state) {
    switch (state) {
        case 1:
            state = 'block';
        break;
        default:
            state = 'none';
    }
    console.log(state);
    document.getElementById(target).style.display = state;
}