2
我有一個函數可以讓我拖動一些東西。我的js:mouseup事件並不總是觸發
$(function() {
$(svgcanv).css('cursor', '-moz-grab');
var leftButtonDown = false;
$(document).mousedown(function(e){
console.log('pressed');
// Left mouse button was pressed, set flag
if(e.which === 1) leftButtonDown = 1;
});
$(document).mouseup(function(e){
console.log('released');
// Left mouse button was released, clear flag
leftButtonDown = 0;
$(svgcanv).css('cursor', '-moz-grab');
firstDragCanvas = 1;
});
$(mainGroup).mousemove(function(e){
if (leftButtonDown == 1)
{
$(svgcanv).css('cursor', '-moz-grabbing');
var posX = e.pageX;
var posY = e.pageY;
if (firstDragCanvas == 0)
{
posX = e.pageX - canvasPosX;
posY = e.pageY - canvasPosY;
}
else
{
canvasPosX = e.pageX - translateX;
canvasPosY = e.pageY - translateY;
posX = translateX;
posY = translateY;
firstDragCanvas = 0;
}
if (posX > 0)
posX = 0;
if (posX < -canvasWidth + $("#holder").width())
posX = -canvasWidth + $("#holder").width();
translateX = posX;
translateY = posY;
mainGroup.setAttribute("transform","translate("+posX+","+posY+") scale("+currentZoomLevel+")");
}
});
});
問題是mouseup事件並不總是被觸發。其他2工作正常。我第一次移動東西時,一切正常。但第二,如果我按下並立即拖動鼠標將不會被觸發。如果我停止拖動,請點擊某處,然後再次拖動該腳本再次運行OK。
我的控制檯(2拖動,然後單擊然後再拖動注意到2個連續的「按下」琴絃 - 來自鼠標按下記錄。):
而且沒有...這是一個SVG並需要在裏面拖動,所以不能使用jQuery可拖動。
只有一次是在事件發生之前需要。我在答案前2分鐘就想出了它:)。 – zozo 2012-02-23 10:38:05