2013-06-20 46 views
0

我有以下功能:其它函数中执行功能只有一次

div_paper.onmousedown = function(event) { 
    var mouseCoords = getCoords(event); 
    startX = mouseCoords.x - offset[0]; 
    startY = mouseCoords.y - offset[1]; 
    rect = paper.rect(startX, startY, 0, 0); 
    document.onmousemove = doDraw; 
    // the function below i would like to fire once 
    rect.drag(drag_move, drag_start, drag_up); 
}; 

其火,你可以看到,在每个鼠标按下。我想在第一个mousedown之后只能触发drag函数一次。我应该使用jQuery .one()吗?

在此先感谢。

+0

设置标志'解雇= FALSE'然后一旦函数被调用一次设置该标志为true。 – stackErr

+1

jQuery .one()应该为你的目的工作正常 –

+0

每次事件发生时,或只有一次? – ajp15243

回答

2

这是即兴的,但你可以尝试:

var dragged = false; 
div_paper.onmousedown = function(event) { 
    var mouseCoords = getCoords(event); 
    startX = mouseCoords.x - offset[0]; 
    startY = mouseCoords.y - offset[1]; 
    rect = paper.rect(startX, startY, 0, 0); 
    document.onmousemove = doDraw; 
    // the function below i would like to fire once 
    if (!dragged) 
    { 
     dragged = true; 
     rect.drag(drag_move, drag_start, drag_up); 
    } 
}; 
+0

作品完美无瑕,不知道为什么我没有想到这一点。但是使用'true'还是'false'代替字符串或数字可以更好?计算是否更好,您需要更少的调试? – supersize

+1

@超级大小如果你只是在寻找一个“是”或“否”的值(这里是有道理的,所以使用'true' /'false'),那么布尔变量就是要走的路。这是他们的目的:)。 – ajp15243

+0

然后又是一个问题,因为我不想为此创建一个新帖子。当我想“解除绑定”时,尽管在哪个时间,“mousedown”。我可以写'div_paper.onmousedown = null;'对吗?它的这种问题只知道jQuery而不是纯粹的JS。 – supersize