Jquery 拖动按钮后单击事件触发

Jquery 拖动按钮后单击事件触发,jquery,onclick,draggable,Jquery,Onclick,Draggable,我有一个按钮与点击事件,我想使该按钮拖动。我所做的是 $(function() { $( "#btn-1834" ).draggable({ cancel: false }); }); 这是用于拖动按钮的脚本。但当我拖动它时,它将触发单击事件。 是否有任何解决方案,这意味着我想拖动该按钮,但拖动后不会触发单击事件,而且该按钮必须有一个单击事件 按钮Id和模式Id是动态生成的解决此问题的一种方法是在某处设置一个标志,指示您正在拖动元素,然后在拖动完成几毫秒后清除标志 然后

我有一个按钮与点击事件,我想使该按钮拖动。我所做的是

$(function() {
$( "#btn-1834" ).draggable({
        cancel: false
    });
});
这是用于拖动按钮的脚本。但当我拖动它时,它将触发单击事件。 是否有任何解决方案,这意味着我想拖动该按钮,但拖动后不会触发单击事件,而且该按钮必须有一个单击事件


按钮Id和模式Id是动态生成的

解决此问题的一种方法是在某处设置一个标志,指示您正在拖动元素,然后在拖动完成几毫秒后清除标志

然后,在单击处理程序中,检查是否设置了该标志-如果设置了,则不要执行任何操作

根据您使用的库的不同,具体的实现可能会有很大的不同,因此我恐怕无法详细介绍

$('#btn-1834').draggable({
    cancel: false
}).on('mouseup', function (e) {
    e.preventDefault();
    // your release code
});
或者,您可以将发布代码绑定到停止事件:

$('#btn-1834').draggable({
    cancel: false,
    stop: function (e, ui) {
        // your release code
    })
}) // ..

您可以像这样使用off函数

$(function() {
$( "#btn-1834" ).off('click');
$( "#btn-1834" ).draggable({
        cancel: false
    });
});
调用拖动函数后,您可以使用单击事件,请尝试以下代码

var clickFlag = true;
$('#btn-1834').click(function(){
    if(clickFlag){
        //do the click action
    }
})
$('#btn-1834').draggable({
    cancel: false,
    start:function(e,ui){
        clickFlag = false;
    },
    stop: function (e, ui) {
        clickFlag = true;
    }
});
注意:我还没有测试过这个

更新

不需要旗帜什么的只需在可拖动事件之后分配单击事件,即可正常工作

更新2

删除
数据目标
属性,并按相同顺序运行此代码[重要信息]

$('#btn-1834').draggable({
    cancel: false
});

$('#btn-1834').click(function(){
    $('#key_edit_modal_1834').modal('show');
})
更新3

将html更改为

<button type="button" class="btn btn-default default-key keypress btn_row1 modalbtn" id="btn-<%= key_position.id %>" data-id="<%= key_position.id %>"></button>

<div id="key_edit_modal_<%= key_position.id %>" class="modal fade">

这不会取消所有与鼠标点击相关的事件吗?包括点击功能?如何绑定点击功能?根据这一点,拖动问题时不会触发单击事件:
该按钮必须有一个单击事件
。你的答案是删除这个event@empiric我没有完全阅读问题,我的错误,修改了答案对不起,这是我的错误,这个按钮上有一个数据目标,用于显示编辑按钮文本的模式弹出窗口。那我该怎么办呢?请把那些代码也贴出来。如果您使用的是bootstrap,那么删除目标并使用javascript触发modal,但现在问题是模态id和按钮id是动态生成的。那么,我如何使用动态生成的按钮id和模态id的js函数,然后共享一些动态生成的html。。。也请在你的问题中加上这个
$(document).on('click','.modalbtn',function(){
    $('#key_edit_modal_'+$(this).data('id')).modal('show');
})