リスナー内からリスナーをアンバインドすることは可能ですか? 独自のバインド解除の基準を決定するリスナーがあるため、これを実行したいと考えています (たとえば、特定のキーが押されると、リスナーはバインドを解除する必要があります)。
$input.on("keydown.listenerOne", function (press) {
if(press=="37"){
$input.off("keyup.listenerOne");
}
});
リスナー内からリスナーをアンバインドすることは可能ですか? 独自のバインド解除の基準を決定するリスナーがあるため、これを実行したいと考えています (たとえば、特定のキーが押されると、リスナーはバインドを解除する必要があります)。
$input.on("keydown.listenerOne", function (press) {
if(press=="37"){
$input.off("keyup.listenerOne");
}
});
はい、それは正しいアプローチです。ハンドラー内でアンバインドできますが、2 つの異なるイベント (keyup と keydown) があることに注意してください。おそらく、あなたはキーアップを意味していました。
イベントにバインドし、keydown
イベントのバインドを解除しているためkeyup
、これは機能しません。これには、例ごとにバインドがありません。また、参照するイベントはpress
ore
であり、プロパティevent
を参照する必要があります。which
if(e.which == 37)
バインドしているのと同じものをバインド解除する必要があります。この場合、バインドしているkeyup
ときにバインドを解除しようとしていますkeydown
。また、press
キーコードは教えてくれません。
var code = press.keyCode || press.which;
if(code == 37) { //Enter keycode
//Do something
}
それよりもif (press == "37")
この回答から取得