2013-06-20 47 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