2012-01-11 152 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