2014-02-14 46 views
0

我有一個JavaScript函數,將運行並不會停止,一旦被激活,我需要完全停止該funcrtion和方式及其所有內容的事件末JavaScript函數及其所有內容

line.addEventListener('click', function() { 
    $(function(){ 

    var canvasOffset=$("#canvas").offset(); 
    var offsetX=canvasOffset.left; 
    var offsetY=canvasOffset.top; 
window.alert(offsetX); 
    var startX; 
    var startY; 
    var isDown=false; 
    var canvas2 = $("#canvas"); 



    function drawLine(toX,toY,context){ 
     context.beginPath(); 
     context.moveTo(startX, startY); 
     context.lineTo(toX,toY); 
     context.stroke(); 
    } 

    function handleMouseDown(e){ 
     e.preventDefault(); 
     mouseX=parseInt(e.clientX-offsetX); 
     mouseY=parseInt(e.clientY-offsetY); 

     // save drag-startXY, 
     // move temp canvas over main canvas, 
     // set dragging flag 
     startX=mouseX; 
     startY=mouseY; 
     contextTemp.clearRect(0,0,canvasTemp.width,canvasTemp.height); 
     $("#canvasTemp").css({ left:0, top:0 }); 
     isDown=true; 
    } 

    function handleMouseUp(e){ 
     e.preventDefault(); 
     if(!isDown){return;} 
     // clear dragging flag 
     // move temp canvas offscreen 
     // draw the user's line on the main canvas 
     isDown=false; 
     mouseX=parseInt(e.clientX-offsetX); 
     mouseY=parseInt(e.clientY-offsetY); 

     drawLine(mouseX,mouseY,context); 
    } 

    function handleMouseMove(e){ 
     e.preventDefault();   
     if(!isDown){return;} 
     mouseX=parseInt(e.clientX-offsetX); 
     mouseY=parseInt(e.clientY-offsetY); 
     // clear the temp canvas 
     // on temp canvas draw a line from drag-start to mouseXY 
     contextTemp.clearRect(0,0,canvasTemp.width,canvasTemp.height); 
     drawLine(mouseX,mouseY,contextTemp); 
    } 

    canvas2.mousedown(function(e){handleMouseDown(e);}); 
    canvas2.mousemove(function(e){handleMouseMove(e);}); 
    canvas2.mouseup(function(e){handleMouseUp(e);}); 
canvas2.mouseout(function(e){handleMouseUp(e);}); 


}); // end $(function(){}); 
}); 

此功能需要停止對一個變量運行單擊如停止按鈕

但它不能停止所有其他功能運行

+0

哪些功能需要停止運行? – ppoliani

+0

你能解釋更多什麼是你的問題,我只是看到,有一個功能,執行一個點擊... –

+0

你不能停止運行的功能,但可以使用一個標誌來確定是否需要執行或不。也許[jQuery的一個功能](http://api.jquery.com/one/)可以有所幫助。 – sroes

回答

1

你爲什麼不取消綁定你在第一位置設置的事件,因爲你已經使用jQuery你可以做sg。像:

var handleMouseDown = function(e) { 
    /* ... */ 
}; 

// bind the event: 
$("#canvas").bind("click", handler); 

// unbind again: 
$("#canvas").unbind("click", handler); 

刪除功能:

var fn = function() { 
    alert(1); 
} 
fn(); 
fn = undefined; 
fn(); 
+0

我會如果我知道如何解除事件,但我不是因爲事件看起來像這樣,如果他們在不同的格式我可以但我不知道如何代碼 –

+0

canvas2.mousedown (函數(E){handleMouseDown(e)中;}); (函數(e){handleMouseMove(e);}); (函數(e){handleMouseUp(e);}); canvas2.mouseout(function(e){handleMouseUp(e);}); –

+1

更新了更好的格式的答案 –

相關問題