如何在jQuery中重新触发(或延迟触发)`mousedown`事件?

时间:2010-12-17 20:11:39

标签: events jquery-plugins jquery

最近有一个问题让我烦恼:在mousedown处理程序中,我在事件中使用.preventDefault来防止在拖动时选择文本:

$(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 个答案:

答案 0 :(得分:1)

将事件对象传递给trigger就jQuery而言(与jQuery绑定的事件处理程序将被执行,并将对象作为参数接收),这使您可以执行像{{3但是,不会发生默认操作。大多数浏览器支持DOM级别2规范this,但dispatchEvent除外,the usual suspect代替fireEvent,因为它不会触发默认操作,所以非常无用。