2016-10-03 60 views
0

我的代碼只旋轉一次圖像--90',然後停止工作。每次我打電話時,總是將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是一個問答網站;在此留下您的問答以幫助他人。如果有必要,我認爲你可以刪除你自己的問題,而不是用垃圾取代它。 – 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;設定的功能

+0

如果你在多個地方使用它,那麼解決方案將無法正常工作。 – Cine