如何使mousedown事件防止单击效果,并且只影响按住的单击

How to make mousedown event to prevent single click effect and only affect click being held

本文关键字:单击 影响 mousedown 何使 事件      更新时间:2023-09-26

由于jQuery捕捉,我不得不使用mousedown而不是使用可拖动的启动、拖动事件。。。jQuery UI支持给了我这个可行的解决方案,但如果你点击红色块,只需点击。。。你可以看到黑色向导出现了,尽管我不喜欢。

这是jQueryUI团队为我的问题修复的小提琴。

有没有什么方法可以让它工作,这样单次点击就不会只在按住点击时显示黑线?

这是一个简单的代码:

$(".block").draggable({
    snap: ".guide",
    snapTolerance: 10,
    stop: function( event, ui) {
        $(".h-line").css("display", "none");
    }
}).on( "mousedown", function(event) {
    $(".h-line").css("display", "block");
});

也许通过设置setTimeout?但这是正确的解决方案吗?

在您的情况下,当您简单地单击'.block'时,会在_mouseown上显示'.h-line',但不会引发dragstart,因此和dragstop不会引发
为了快速修复,您可以使用mousemovemouseup事件,如

$(".block").draggable({
    snap: ".guide",
    snapTolerance: 10
}).on( "mousedown", function() {
    this.t = true;
}).on( "mouseup",function(){
    this.t = false;
    $(".h-line").css("display", "none");
}).on("mousemove", function(){
    if(this.t && $(".h-line:visible").length === 0)
        $(".h-line").css("display", "block");
});

小提琴上的样本