2015-02-08 80 views

回答

1

这似乎取决于如何快速的鼠标移动。我的猜测是,当触发事件时,event.target变成鼠标下的任何东西。所以它在进入父div时触发,但是如果鼠标快速移动,那么当事件处理程序被处理时,它可能已经将鼠标悬停在子div上。

(更新答案)

由于@Stan评论,与event.currentTarget更换event.target是简单的解决办法,它会针对其监听器触发的事件,而不是鼠标下的元素的元素。

(原来的答复/其他选项)

您也可以在父DIV设置ref="target",然后用裁判,而不是事件的目标。

_mouseEnter: function(event) { 
    this.refs.target.getDOMNode().classList.add('ui-hover'); 
}, 

但是,可能最好避免像这样触摸DOM。在这种情况下,您可以在事件处理程序中使用setState并根据this.state使用条件给出不同的结果。

_mouseEnter: function(event) { 
    this.setState({ 
    hovering: true 
    }); 
} 
+1

我认为正确的解决方案实际上是使用'event.currentTarget'而不是'event.target',因为我想修改实际处理事件的元素。你是对的,似乎当鼠标快速移动时,目标可能会更新到内部元素,但触发事件的currentTarget应始终保持放置状态。 – Stan 2015-04-01 18:48:45

+0

是的,我看到这是行不通的。我会更新我的答案。 – 2015-04-02 07:23:13