2009-11-23 23 views
0

一個問題,我該怎麼辦與jQuery使mousemove事件被激活只有當鼠標左鍵被保持按下,並儘快按鈕得到釋放鼠標移動事件停止?jQuery的:在事件

+1

只是綁定到'mousemove'上'mousedown',並解除綁定在'mouseup'。 –

回答

1

簡單的方法是保持一個標誌,只有在按住左鍵時纔將其設置爲真。這意味着您必須在按下鼠標左鍵時將其設置爲true,並在釋放時將其重置爲false。然後,只有當該標誌爲真時,您才能對mousemove執行操作。

它不是一個jQuery具體的解決方案,但對於這樣的問題,一個通用的模式,因此jQuery的可能會提供一個更好的解決方案。

您可能需要採取特殊照顧的情況下,就像失去輸入焦點或將鼠標光標會該分區外,同時保持按下左鍵。

5

在這裏,我結合對鼠標按下了mousemove事件,並解除綁定上mouseup。我在jQuery中使用了很酷的功能,因此可以將其他mousemove事件添加到此選擇器中,但只有您想要解除綁定的那個事件纔會被刪除。他們被稱爲Namespaced Events

$("#yourdivid").mousedown(function(e){ 
    if(e.which == 1){ 
     $(this).bind('mousemove.coolnamespace', function(e){ 
      // Your mousemove event 
     }); 
    } 
}).mouseup(function(e){ 
    if(e.which == 1) $(this).unbind('mousemove.coolnamespace'); 
}) 

編輯:我更新了我的答案,使用標準化領域which。 jQuery規範化爲1 =左,2 =中,3 =右。取決於瀏覽器,button的值將有所不同。

0

您綁定的mousedown事件和鼠標移動調用該函數的內部,並使用jQuery的解除綁定事件擺脫鼠標移動的;

var $button = $("ELEMENT HERE");

 $button.mousedown(function(){ 
      $(this).mousemove(function(){ 
       //Events here 
      }); 
     }).mouseup(function(){ 
      $(this).unbind("mousemove"); 
     });