2
<a href="/somewhere" onmouseout="someFunction()">blah blah blah<img src="blah.jpg"></a>

在上面的链接中,我someFunction()在鼠标离开链接时触发。似乎直截了当。但是当我将鼠标悬停在图像“blah.jpg”上时,onmouseout 事件也会触发。这是不可取的,因为“blah.jpg”实际上在a节点中。a如果我在节点内有一个 div,或者除了纯文本之外的任何其他 html 元素,也会发生同样的事情:javascript 认为这是在节点之外a。有没有办法阻止这些事件不正确地触发?所描述的行为是在 win7 上的 chrome 和 ff 中。

*更新:如果有 jquery 解决方案,请告诉

4

2 回答 2

2

您可以通过验证节点类型来做到这一点。尝试

onmouseout="if ((event.relatedTarget || event.toElement) == this.parentNode) someFunction()"
于 2012-04-21T20:43:08.767 回答
0

在概念上与 shehzad 相似,所以我投票支持他。应该跨浏览器工作。在 html 中:

onmouseout='out(this)'

在 js 中(包含 jquery 文件):

out(thisRef) {
   var newHover = event.relatedTarget || event.toElement;
   if(!jQuery.contains(thisRef,newHover) && !(thisRef==newHover)) {
        someFunction();
   }

}

于 2012-04-23T01:18:02.220 回答