リスナー内からリスナーをアンバインドすることは可能ですか? 独自のバインド解除の基準を決定するリスナーがあるため、これを実行したいと考えています (たとえば、特定のキーが押されると、リスナーはバインドを解除する必要があります)。
$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、これは機能しません。これには、例ごとにバインドがありません。また、参照するイベントはpressoreであり、プロパティeventを参照する必要があります。whichif(e.which == 37)
バインドしているのと同じものをバインド解除する必要があります。この場合、バインドしているkeyupときにバインドを解除しようとしていますkeydown。また、pressキーコードは教えてくれません。
var code = press.keyCode || press.which;
if(code == 37) { //Enter keycode
//Do something
}
それよりもif (press == "37")
この回答から取得