我有以下代碼來旋轉div。通過在同一個div右上角的圖像上的mousedown事件。我想要div旋轉直到鼠標向上。從邏輯上講,我相信代碼沒問題,但是它在點擊後可以工作。當我點擊其他項目時,鼠標移動不會停止。我認爲在拖動後鼠標按下瀏覽器嘗試拖動圖像,但我需要幫助..在此先感謝:)帶鼠標移動的旋轉div
fl_rotate: false,
rotdivs: function() {
var pw;
var oThis = this;
$('.drop div img').mousedown(function(e) {
oThis.destroyDragResize();
oThis.fl_rotate = true;
return;
});
$(document).mousemove(function(e) {
if (oThis.fl_rotate) {
var element = $(oThis.sDiv);
oThis.rotateOnMouse(e, element);
}
});
$(document).mouseup(function(e) {
if (oThis.fl_rotate) {
oThis.initDragResize();
var ele = $(oThis.sDiv);
ele.unbind('mousemove');
ele.draggable({
containment: 'parent'
});
ele = 0;
oThis.fl_rotate = false;
}
});
},
rotateOnMouse: function(e, pw) {
var offset = pw.offset();
var center_x = (offset.left) + ($(pw).width()/2);
var center_y = (offset.top) + ($(pw).height()/2);
var mouse_x = e.pageX;
var mouse_y = e.pageY;
var radians = Math.atan2(mouse_x - center_x, mouse_y - center_y);
var degree = (radians * (180/Math.PI) * -1) + 100;
// window.console.log("de="+degree+","+radians);
$(pw).css('-moz-transform', 'rotate(' + degree + 'deg)');
$(pw).css('-webkit-transform', 'rotate(' + degree + 'deg)');
$(pw).css('-o-transform', 'rotate(' + degree + 'deg)');
$(pw).css('-ms-transform', 'rotate(' + degree + 'deg)');
}
你可以創建一個http://jsfiddle.net/與一些例子? – Akarun
你是否發佈了所有相關的代碼? – polarblau
你能console.log這些事件,看看它們是否發生在你認爲它們應該發生的時候嗎?從你寫的我知道的是,第一個mousedown事件只在點擊後觸發,隨後第二次點擊激活禁用旋轉的mouseup事件,因爲fl_rotate設置爲true。然而,這聽起來像mouseup事件在mousedown之前觸發?!? – Ekim