2015-02-08 77 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