0

.izberiLokacija 类中的 onmouseout 事件似乎是由 .izberiLokacija 类中的 onmouseout 事件触发的<li>。这是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>
4

2 回答 2

0

这就是 JavaScript 的工作方式。要么在每个上放置一个处理程序<li>以防止冒泡(使用event.stopPropagation()或通过返回false),或者测试event.target你是否希望它在你的.izberiLokacija处理程序中。阅读有关事件冒泡的更多信息,这应该可以消除混乱。

另一种方法是将onmouseout/onmouseover替换为onmouseleave/ onmouseenter。它们几乎是同一事件,但后一对不会冒泡。

题外话:如果你从alert到,你会更快乐console.log;此外,内联 JavaScript 也很难使用;考虑分离你的 JS 和 HTML。

于 2012-05-10T19:33:57.250 回答
0

每次你将鼠标悬停在一个元素上......“悬停”事件都会触发。事件也会在 DOM 树中冒泡,并为它的每个父级触发……一直到 body 标记。

请不要内联分配事件......这使得难以维护代码和臃肿的非语义标记。

相反,试试这个(使用 jQuery ......因为每个人都使用 jQuery,对吗?)

http://jsfiddle.net/ryanwheale/fab8Z/

于 2012-05-10T19:41:44.740 回答