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');
})