似乎 .izberiLokacija 类中的 onmouseout 事件是由 <li>
中的 onmouseout 事件触发的。这是Javascript的工作方式还是我做错了什么。如果是这种情况,请提出一个可能的解决方案,仅在离开div 本身时激活 .izberiLokacija 类中的 onmouseout 事件......
<div class="izberiLokacija" onmouseout="alert('asd');toggleDivZaMalaMapa(2);">
<ul>
<li onmouseover="toggleDivZaMalaMapa(1);">li1</li>
<li onmouseover="toggleDivZaMalaMapa(1);" style="border-top: solid 2px #00699B"> li2 </li>
</ul>
</div>
这就是 JavaScript 的工作方式。要么在每个<li>
上放置一个处理程序以防止冒泡(用event.stopPropagation()
或通过返回false
),或者测试event.target
是否是您希望它在.izberiLokacija
处理程序中的样子。阅读更多关于事件冒泡的信息,这应该可以消除混乱。
另一种方法是将onmouseout
/onmouseover
替换为 onmouseleave
/onmouseenter
.它们几乎是同一个事件,但后一对不会冒泡。
题外话:如果你从alert
转移到console.log
,你会更快乐;此外,内联JavaScript很难使用;考虑将JS和HTML分开。
每次将鼠标悬停在元素上时...将触发"悬停"事件。 事件也会冒出DOM树,并为它的每个父母点火......一直到身体标签。
请不要内联分配事件...这使得难以维护代码和臃肿的非语义标记。
相反,试试这个(使用jQuery...因为每个人都使用jQuery,对吧?
http://jsfiddle.net/ryanwheale/fab8Z/