2016-09-08 1 views
2

fabric jsにオンとオフを有効にするチェックボックスがあります。今、私はOKにそれを回すことができますが、どのように私は非常に大きなJSFiddleであること、それをオフJSFiddleグリッドファブリックへのスナップをオフにする方法

$('#on-off-switch').change(function() { 
    var $check = $(this), 
     $div = $check.parent(); 

    if ($check.prop('checked')) { 
     // Turn On Snap2Grid 
     canvas.on('object:moving', function(options) { 
      options.target.set({ 
       left: Math.round(options.target.left/grid) * grid, 
       top: Math.round(options.target.top/grid) * grid 
      }); 
     }); 
     $("#on-off-label").text("On"); 
    } else { 
     // Turn Off Snap2Grid 
     $("#on-off-label").text("Off"); 
    } 
}); 
+0

関連する質問/回答:http://stackoverflow.com/q/34751006/3345375 – jkdev

答えて

2

オンにし、私はあなたのコード内の他の問題があるかもしれないと思います。

あり異なる動作1を持っているいくつかの方法は、イベント関数自体にいくつかのグローバルproperyをチェックすることです:

canvas.on('object:moving', function(event) { 
    if(window.snapTo) { 
     event.target.set({ 
      left: Math.round(options.target.left/grid) * grid, 
      top: Math.round(options.target.top/grid) * grid 
     }); 
    } else { 
    // do nothing 
    } 
}) 

別の方法は、単にイベントを削除することです。

あなたはこのようにすべてのイベントを削除することができます。

canvas.off(); 

またはタイプのすべてのイベント:

canvas.off('object:moving'); 

それとも、関数への参照を持っている場合は1つだけバインドされたイベントハンドラを:

canvas.off('object:moving', eventHandlerFunction); 
+0

私は以前の質問で尋ねましたが、同じRectの複数のインスタンスを追加する方法はありません。しかし、この答えのためにタイ。私はcanvas.offを試したと思った( 'object:moving');しかし、私はこれがうまくいったように思っています。 – Wayne

+0

正確に同じrectを複数回追加することはできませんが、正確なコピーを得るには '.clone()'することができます。 – StefanHayden

+0

ステファンありがとうございます。これは私をとても混乱させました。私はまだ少し困惑しています。私の関数名はgridOff()です。だから私は試みました:canvas.off( 'object:moving'、gridOff);これは私のためには機能しませんが、canvas.off( 'object:moving');動作します。私は自分の問題が構文だと思う。私は良いコーダーではありませんが、試しています。あなたの答えをもう一度おねがいします。 -レイチェル – user1204493

関連する問題