一種方法是創建一個全局變量,當用戶點擊過的元素,例如,以修改它的值:
var mouseIsDown = false;
$('#mycanvas').on('mousedown', function() {mouseIsDown = true});
$('#mycanvas').on('mouseup', function() {mouseIsDown = false});
現在,所有你需要做的是綁定「鼠標移動」到你想要觸發的函數,並簡單地將一個條件附加到函數的主體上,檢查左鍵單擊的狀態並在必要時轉義。現在
function fireThis(e) {
// if the user doesn't have the mouse down, then do nothing
if (mouseIsDown === false)
return;
// if the user does have the mouse down, do the following
// enter code here
// ....
// ....
}
// bind mousemove to function
$('#mycanvas').on('mousemove', fireThis);
,如果用戶在元素內單擊,然後釋放前拖動鼠標的元素外,你會發現,「鼠標鬆開」永遠不會觸發變量mouseIsDown將永遠不會被改回假。爲了繞開這個問題,你可以綁定「鼠標移出」到復位mouseIsDown或綁定「鼠標鬆開」全球作爲這樣的功能:
$('#mycanvas').on('mouseout', function() {mouseIsDown = false});
OR
$(document).on('mouseup', function() {mouseIsDown = false});
下面是一個例子:http://jsfiddle.net/pikappa/HVTWb/