2011-04-16 80 views
0

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

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

http://i.stack.imgur.com/hrfsM.png

+0

mouseout事件我认为,当来自移动鼠标仅发生某处到某处。如果我理解正确,当鼠标位于id1中时,应该调用代码中的hideall(),并移出id1外部。你是否声称当鼠标从id1(但不是id2) - > id2移动时,hideall()也会被错误地触发?或者当它从id2-> outside_id2移动时? – ninjagecko 2011-04-16 20:34:03

+0

当我从id1> id2和id1> body移动鼠标,然后调用hideall()函数。我需要那个hideall()函数调用只是如果id1>正文,而不是id1> id2 – somedude 2011-04-16 20:43:07

+0

我已经看到一个非常像这样的问题:http://jsfiddle.net/userdude/gsv7n/1/ – 2011-04-16 21:38:02

回答

1

有Internet Explorer中的专有事件称为鼠标离开,我相信是你在寻找什么。不幸的是,这不适用于所有浏览器。我建议你使用像jQuery这样的JavaScript库。它有内置的活动。有关详细信息,请参阅http://api.jquery.com/mouseleave/。那么,你很可能会寻找的是这样的:

<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> 
0

适应另一种答案我有previously

<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; 
} 

http://jsfiddle.net/gMpkX/