2012-08-03 13 views
5

でイベントを削除は、私はこれを持ってjQueryのまたはJavaScript

$(function(){ 
    //remove keydown doSomething1 
    $("body").keydown(doSomething2); 
}); 

コメントに何を行うには?私の現在のコードでは、doSomething1とdoSomething2の両方が呼び出されます。私は必要としないものを無効にしたい。 jQueryを使ってイベントリスナーを削除するには

+0

私は、イベントハンドラをおくことをお勧めしますし、キーが押されたときに行うのですか何告げる変数を追加します。 –

答えて

9

、あなたは.off()を使用することができます。

$("body").off("keydown", doSomething2); 

keydown method.on("keydown", ...)のためだけのショートカットです覚えておいてください。

しかし、それらを無効にするには、現在選択されているビューに基づいて異なるものを実行するハンドラを1つだけ持たせるか、両方をバインドして、それぞれ正しいビューが現在選択されているかをチェックする。 doSomething2関数リファレンスある場合

4

、あなたはjQueryのバインドイベントハンドラを削除するには.off()(jQueryの1.7以降)または.unbind()を使用することができます。

$('body').off('keydown', doSomething2); 

// or 

$('body').unbind('keydown', doSomething2); 

なお、実行順序が要因となります。イベントハンドラのバインドを解除するコードが最初に実行された場合、効果はありません。一般に、jQueryイベントハンドラはバインドされた順にトリガされるため、質問の最初のコードスニペットが最初に実行された場合、この方法は機能しません(並べ替える必要があります)。

4

はjQueryのを使用して以下のようにこれを試してみてください。

$(function(){ 
    // this would remove keydown from body 
    $("body").unbind('keydown', doSomething2); 
}); 
関連する問題