リスナーが呼び出されたスコープ外でリスナーをオフにできるかどうかわからなかったので、小さなテスト コードを作成しました。より長く動作するようです。
var testobj = {
init: function() {
testobj.listener();
},
listener: function() {
$(document).on('mousedown', function() {
testobj.listener_off();
console.log("on");
});
},
listener_off: function() {
$(document).on('mouseup', function() {
$(document).off('mousedown', function() {
console.log("off");
});
});
}
}
$(function() {
testobj.init();
});
繰り返しになりますが、問題は次のとおりです。
$(document).off('mousedown', function() {
console.log("off");
});
使用中にコードが壊れているようです:
$(document).off('mousedown');
うまく機能しているようです。
さらに、複数のイベント リスナー (特に同じイベントに反応するもの) を扱う場合、それらをオンまたはオフにするためのベスト プラクティスと見なされるものは何ですか? それらを別々の関数に分けて、後で呼び出されるようにしたり、問題を引き起こす可能性があるのは正しいですか?