.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>
答案 0 :(得分:0)
这是JavaScript的工作方式。在每个<li>
上放置一个处理程序以防止冒泡(使用event.stopPropagation()
或返回false
),或者测试event.target
是否是您想要的.izberiLokacija
onmouseout
1}}处理程序。阅读有关事件冒泡的更多信息,这应该可以消除困惑。
另一种方法是将onmouseover
/ onmouseleave
替换为onmouseenter
/ alert
。它们几乎是同一个事件,但后者并没有泡沫。
偏离主题:如果您从console.log
转到{{1}},您会更开心。此外,内联JavaScript很难使用;考虑分离你的JS和HTML。
答案 1 :(得分:0)
每次将鼠标悬停在元素上时,“悬停”事件都会触发。事件也会冒出DOM树并为每个父母点燃......一直到身体标签。
请不要内联分配事件...这使得难以维护代码和臃肿的非语义标记。
相反,试试这个(使用jQuery ......因为每个人都使用jQuery,对吗?)