最近有一个问题让我烦恼:在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)
})
我能够拖动整个文本段落,仍然可以在段落中执行文本选择。
欢迎所有答案,建议和想法!
答案 0 :(得分:1)
将事件对象传递给trigger
就jQuery而言(与jQuery绑定的事件处理程序将被执行,并将对象作为参数接收),这使您可以执行像{{3但是,不会发生默认操作。大多数浏览器支持DOM级别2规范this,但dispatchEvent除外,the usual suspect代替fireEvent,因为它不会触发默认操作,所以非常无用。