2012-01-11 153 views
0

因爲我已經實施了不同的操作,當人們點擊畫布時以及某人點擊並拖動某物時。我通過將mousedown事件綁定到我的畫布來實現這一點,並在該功能中實現了拖動或鼠標移動之間的區別。這很有用,但是當我也想支持對元素進行雙擊時,我遇到了問題。檢測鼠標點擊時的移動,並檢測雙擊

來實現這一點的正常的方式是這樣的:

$(canvas).click(function1); 
$(canvas).dblclick(function2); 

但我並沒有實現,那是因爲我不得不檢查鼠標是否移動(即拖)。這是我目前實施:

var handler = { 
    clicked:function(e){ 
     ... 
     $(canvas).bind('mousemove', handler.dragged); 
     $(window).bind('mouseup', handler.dropped); 
    }, 
    dragged:function(e){ 
     ... 
    }, 
    dropped:function(e){ 
     function loop(ctr){ 
     if (ctr < 50) { 
      setTimeout(function(){loop(ctr+1)}, 2); 
      } else { 
      $(canvas).mousedown(handler.clicked); 
      handler.singleClick(e); 
      } 
     } 
     $(canvas).mousedown(handler.doubleclicked); 
     loop(0); 
    }, 
    doubleClick: function(e){ 
     ... 
    }, 
    singleClick: function(e){ 
     ... 

     }     
    } 

$(canvas).mousedown(handler.clicked); 

我想這兩件事情結合起來(識別拖放doublclick的)通過實施刪功能,等待一段時間,以監聽再點擊一下,如果沒」 t發生在那段時間內,它進入singleclick函數。目前尚未識別第二次點擊。

我認爲有更好的方法來做到這一點? 在此先感謝

回答

1

你可能想看看這個:
http://threedubmedia.com/code/event/drag

它爲您提供了另外的附加功能.drag().click().dblclick()

也Theres下降版本:
http://threedubmedia.com/code/event/drop

+0

你有這個插件的經驗嗎?當我想在我的代碼中使用它時,我從插件的這段代碼中得到一個錯誤:'//切換文本選擇屬性ON(true)或OFF(false)text select:function(bool){ \t \t $(文檔)[bool? 「解除綁定」: 「綁定」( 「選擇開始」,drag.dontstart) \t \t \t .attr( 「不可選擇」,布爾 「關」: 「上」) \t \t \t的CSS( 「MozUserSelect」,布爾? 「「 : 「沒有」 ); \t}' 我把它叫做例子:[http://threadubmedia.com/demo/drag/] '$(div).bind('drag',function(event){alert(「test 「);});' – Consec 2012-01-11 15:43:40