一尘不染

使用jQuery拖放防止点击事件

javascript

我在页面上有可以用jQuery拖动的元素。这些元素是否具有单击事件,可以导航到另一个页面(例如,普通链接)。

防止单击在拖放时处于触发状态的最佳方法是什么?

我对可排序元素有这个问题,但是认为最好有一种通用拖放方法。


阅读 511

收藏
2020-05-01

共1个答案

一尘不染

解决方案是添加单击处理程序,以防止单击在拖动开始时传播。然后在执行删除操作后删除该处理程序。最后的动作应该稍微延迟一点,以防止点击的发生。

可排序的解决方案:

...
.sortable({
...
        start: function(event, ui) {
            ui.item.bind("click.prevent",
                function(event) { event.preventDefault(); });
        },
        stop: function(event, ui) {
            setTimeout(function(){ui.item.unbind("click.prevent");}, 300);
        }
...
})

可拖动的解决方案:

...
.draggable({
...
        start: function(event, ui) {
            ui.helper.bind("click.prevent",
                function(event) { event.preventDefault(); });
        },
        stop: function(event, ui) {
            setTimeout(function(){ui.helper.unbind("click.prevent");}, 300);
        }
...
})
2020-05-01