2016-10-03 13 views
0

私のコードは画像を1回だけ回転させてから、動作を停止します。 angleのように私はそれを呼び出すたびに常に0に設定されています。これをどうやって解決するのですか?私は変数に角度を保つ必要があります。jqueryは変数を保持し、毎回0に設定しないでください。

FILE1.js

$(function() { 
    $('.rotate-receipt').on('click', function() { 
    handleImage.rotateImage(0, this); 
    }); 
}); 

FILE2.js

var handleImage = (function() { 
    return { 
    rotateImage: function (angle, element) { 
     var index = $(element).data('button-index'); 
     angle = (angle + 90)%360; 
     var className = 'rotate' + angle; 
     $('#receipt-image-'+index).removeClass().addClass(className); 
    } 
    }; 
}()); 
+0

外あなたはjsFiddleを作ることができ、または少なくともあなたのhtmlを表示しますか? – DelightedD0D

+0

そのレールが表示されにくい –

+0

質問に答えた後、質問を置き換えないでください。 SOはQ&Aサイトです。他の人を助けるためにQ&Aをここに残す。必要に応じて、あなた自身の質問をごみに置き換えるのではなく削除することができます。 – Sheepy

答えて

1

あなたが "記憶" したい変数を取得する必要があります。

ファイル1:

$(function() { 
    $('.rotate-receipt').on('click', rotateImage(0, $('.rotate-receipt'))); 
}); 

ファイル2:

var rotateImage = function (angle, element) { 
    var $e = $(element); 
    var index = $e.data('button-index'); 
    var target = $('#receipt-image-'+index); 
    return function() { 
     angle = (angle + 90)%360; 
     var className = 'rotate' + angle; 
     target.removeClass().addClass(className); 
    }; 
}; 
+0

が動作しません:(( –

+0

)うまく動作します。https://jsfiddle.net/w0hb7d37/ – Cine

0

あなたは、ページがロードされたとき、それは一度0に初期化されるようにグローバル変数を取る必要があります。あなたがしたように、クリックイベントに毎回ではありません。 これをチェックしてください。

$(function() { 
 
    var angle = 0; 
 
    
 
    $('.rotate-receipt').on('click', function() { 
 
    handleImage.rotateImage(this); 
 
    }); 
 
    
 
    var handleImage = (function() { 
 
    return { 
 
    rotateImage: function (element) { 
 
     var index = $(element).data('button-index'); 
 
     angle = (angle + 90)%360; 
 
     console.log('Angle::'+angle); 
 
     var className = 'rotate' + angle; 
 
     console.log('Class Name::'+className); 
 
     $('#receipt-image-'+index).removeClass().addClass(className); 
 
    } 
 
    }; 
 
}()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="rotate-receipt" data-button-index="1">Rotate</button> 
 
<div id="receipt-image-1">Image to rotate</div>

0

私はそれが自分自身を働いて作られた、ちょうどvar angle = 0; FUNCT

+0

複数の場所を使用している場合、その解決策は機能しません。 – Cine

関連する問題