如何使mousedown事件防止单击效果,只影响点击持有

时间:2014-09-26 17:50:03

标签: javascript jquery html jquery-ui

我不得不使用mousedown而不是使用draggable start,因为jQuery捕捉拖动事件... jQuery UI支持给了我这个有效的解决方案,但是如果你单击红色块,只需点击一下......你可以看到黑色指南出现,即使我不喜欢它。

这里是jQuery UI团队针对我的问题修复的fiddle

有没有什么方法可以让它发挥作用,以便单击不会仅在按住点击时显示黑线?

这是简单的代码:

$(".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?但这是正确的解决方案吗?

1 个答案:

答案 0 :(得分:0)

在你简单点击'.block'的情况下,你在_mousedown上显示'.h-line',但不提高 dragstart ,所以 dragstop don'提高。
为了快速修复,您可以使用 mousemove mouseup 这样的事件

$(".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");
});

sample on fiddle