簡単に有効化/無効化できるように、jquery でイベントをインテリジェントにバインド解除しようとしています。状態変数を使用する必要はなく、共有関数が非常に乱雑になるため、使用を避けようとしています。これは私が最初に試したもので、うまくいきませんでした。
var dragStart = $('#ruler').mousedown(function(e){
position = container.offset();
mousePosition = {
x: e.pageX,
y: e.pageY
};
var dragging = $(document).mousemove(function(e){
var x = e.pageX - mousePosition.x;
var y = e.pageY - mousePosition.y;
container.offset({
left: position.left + x,
top: position.top + y
});
});
var dragStop = $(document).mouseup(function(){
dragStart.unbind();
dragging.unbind();
dragStop.unbind();
});
});
jQueryのイベントハンドラー関数がセレクター内の要素への参照を返すため、機能しないことがわかりました。そのため、すべてが$(document)からバインド解除されていました。これは私の環境の問題です。
関数名を考え出し、ターゲットを絞ったアンバインドを実行できることはわかっていますが、実行しなければならないすべてのさまざまな関数 (上記で示した以上のもの) を使用すると、コードを実行するのが面倒になります。上記のコードで行っていたものと同様の機能を可能にする方法はありますか? 私はこれに沿って何かを考えていました:
var foo;
$(<selector>).<eventType>(foo = function(){
// DO SOMETHING
$(<unbind button>).click(function(){
// foo.unbind();
// OR
// $(<selector>).unbind(foo);
// ???????
});
});
私は創造的な解決策に対してもオープンです。私は今それを機能させることができますが、私はこの特定の方法でそれを行うことができるかどうかを確認しようとしています. ありがとう!