2011-10-19 2 views
13

こんにちは、私は私がバックボーンを使用して削除ホバー状態をどのように処理するか不思議とJSたバックボーンイベント

は、現在、私は

events: { 
    "hover .info" : "hover" 
}, 

hover:(e) => 
    $(e.currentTarget).css("background-color", "#333") 

を持っている私は私が離れてから、私のマウスを移動するイベントを処理する方法を疑問に思いました.infoクラスの要素

hover:イベントハンドラの内部でこれを行うには、標準のcoffeeスクリプトを内部で実行するには、2つのホバーが必要です。

私は基本的にjQuery docsから

$(".info").hover(
    function() { 
     $(this).css("background-color", "#333") 
    }, 
    function() { 
     $(this).css("background-color", "#F3F") 
    }, 
}); 

おかげ

答えて

22

hover() that takes one callback functionのバージョンがある:

説明:マウスポインタが要素に入る又は出るときに実行されるように、マッチした要素に単一のハンドラをバインド。

これは、hoverのバックボーンで使用されるバージョンです。だから、toggleClassでこれを扱うことができ、代わりに直接cssいじりのカップルのCSSクラス:

hover:(e) => 
    $(e.currentTarget).toggleClass('dark-gray') 

デフォルト#F3F色はデフォルトで要素に設定されるだろうし、あなたが持っていると思います:

.dark-gray { 
    background-color: #333 
} 
あなたのスタイルシートに

何らかの理由でtoggleClassを使用できない場合は、mouseentermouseleaveに個別にバインドする必要があります。

+10

方向がハンドラ関数に渡されることには注意してください。 'hover(e){console.log(e.type);} // 'mouseenter'または 'mouseleave'を出力します – tybro0103

27

を真似したい:

$(selector).hover(handlerIn, handlerOut)を呼び出すとするために簡略化したものです:

$(selector).mouseenter(handlerIn).mouseleave(handlerOut);

は、だから私は(申し訳ありませんが、私はCoffeeScriptのを信じていない)バックボーンでこれを処理するための最良の方法は、2つのイベントを設定するだけだと思う​​:

events: { 
    "mouseenter .info" : "hoverOn", 
    "mouseleave .info" : "hoverOff" 
}, 

hoverOn: function(e) { ... }, 
hoverOff: function(e) { ... } 

また、あなたが取るsingle argument syntax、使用することができます1つの関数を呼び出すと、それを両方とも呼び出します。これは.toggle()toggleClass()でうまくいきます。

+0

この答えは、単純なトグルを使用しない場合より良い動作します。ありがとう! – Jared

0

それがアクションリンクされていない場合、あなたはCSSを以下のことができます。pointer-events:none