2012-02-23 48 views
4

我看到的問題是,鼠標懸停事件似乎泡不,當我這樣做:knockout.js事件綁定 - 用鼠標懸停及移出事件出現意外行爲

<div data-bind='events: {mouseover: someFunc, mouseout: someOtherFunc}'> 
    <div data-bind='text: someText'></div> 
</div> 

我是什麼看到的是當我最初懸停時,someFunc函數觸發(我使用這些函數來應用類來獲得懸停效果)。但是,當我的光標進入內部div時,我的mouseout函數會觸發,即使mouseover事件應該從內部div到外部div的冒泡。

這撥弄演示了問題: http://jsfiddle.net/cSBcC/1/

在小提琴,只是嘗試將鼠標懸停在各個麗的當光標進入內部DIV的「懸停」類被刪除,儘管我們仍然鼠標懸停在李。

任何想法?

回答

8

如果你是參考jQuery(你是),那麼你可以使用mouseleave而不是mouseout,因爲它會像你期待的那樣。

mouseout即使從外部元素移動到內部元素也會觸發事件。

這裏正在使用您的樣品mouseleavehttp://jsfiddle.net/rniemeyer/KUNcf/

另一種選擇是隻使用CSS和刪除事件樣結合:http://jsfiddle.net/rniemeyer/KUNcf/2/

li.name:hover { 
    background-color: yellow;   
} 

+0

尼斯,感謝RP! – Greg 2012-02-23 18:00:37

+0

非常感謝!這已經讓我頭腦發熱了好幾天! – user489998 2015-03-30 11:10:59