javascript触发器中的Onmouseout事件

时间:2012-05-10 19:27:57

标签: javascript html

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

2 个答案:

答案 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,对吗?)

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