2010-12-17 87 views
3

一个问题的错误我的脑海最近:在mousedown处理我使用的事件.preventDefault防止文本选择的同时拖动:如何在jQuery中重新触发(或延迟触发)`mousedown`事件?

$(document).bind('mousedown', function(event){ 
    event.preventDefault(); 
}); 

到目前为止好。

然后,同时还具有按下鼠标按钮,我想等待触发一个longclick事件(http://github.com/pisi/Longclick),并有longclick处理程序以某种方式恢复原来的mousedown事件,并开始选择的文本一样,如果在事件的默认是从未被阻止的。

有没有一种方式来迟迟触发本来的鼠标事件?

.trigger能够以某种方式接受现有的(存储的)事件对象吗?例如这样的事情?:

var originalEvent; 

$(document) 
    .bind('mousedown', function(event){ 
     event.preventDefault(); 
     originalEvent= event; 
    }) 
    .bind('longclick', function(event){ 
     $(event.target).trigger(originalEvent) 
    }) 

能够拖动整个文本段落,仍然之后我提供该段内进行文本选择的可能性。

欢迎所有的答案,建议和想法!

回答

1

传递一个事件对象trigger工作尽可能jQuery的关注(使用jQuery绑定事件处理程序将被执行,并接收对象作为参数),它可以让你做很酷的东西像this,但没有默认操作会发生。大多数浏览器支持DOM级别2规范,dispatchEvent,除了the usual suspect,它有fireEvent代替,这是非常无用的,因为它不会触发默认操作。 OK,Tgr。

+0

OK,Tgr。感谢澄清。我也将这个问题发布到jQuery论坛,并得到了相同的答案(http://forum.jquery.com/topic/how-to-re-trigger-or-late-trigger-a-mousedown-event-in-jquery #14737000001842174)。似乎这是不可能的。游民。 – 2010-12-28 22:04:43