悬停时,JQuery OnDrag会发出一声点击

时间:2015-04-20 11:41:13

标签: javascript jquery jquery-ui drag-and-drop draggable

我有一个使用JQuery UI onDrag和onDrop的拖放应用程序。此应用程序是具有选项卡的房间预订系统。我完美地完成了下拉工作,但我确实需要一种功能(如果可能的话)。

有没有办法为标签创建事件处理程序,只有在拖动元素时才会触发?

示例:您想要将人从Tab1移动到Tab2,而不单击选项卡,您只能拖动人 - >将标签悬停 - >然后点击标签。

1 个答案:

答案 0 :(得分:3)

没有用于拖动元素的特定事件处理程序,但通过操纵其他事件,您可以使其工作。

诀窍是使用mousemove事件,但只有在可拖动元素上按下鼠标时才能使用它。因此,我们在true事件中生成一个布尔mousedown,然后在false事件中生成mouseupmousemove事件检查布尔值并且当且仅当布尔值为true时才运行其代码。

以下是一个例子:

$(document).ready(function() {
    //Make draggable draggable
    $("#draggable").draggable();
    //mousedown and mouseup Boolean
    var drragging = false;
    $("#draggable").mousedown(function() { dragging = true; });
    $("#draggable").mouseup(function() { dragging = false; });
    //mousemove event -> mousedrag event
    $("#draggable").mousemove(function() { if (dragging) {
        //The event:
        $("#draggable").css("color", "rgb("+Math.round(255*Math.random())+", "+Math.round(255*Math.random())+", "+Math.round(255*Math.random())+")");
    }});
});
<span id="draggable">Drag me!</span>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>