HTML
<div id="dropableArea">Drop area</div>
<hr>
<ul>
<li class="dragModule">Item 1</li>
<li class="dragModule">Item 2</li>
<li class="dragModule">Item 3</li>
</ul>
jQuery查询
$(function(){
$('.dragModule').draggable({connectToSortable:'#dropableArea',helper: 'clone'});
$('#dropableArea').droppable({
accept: '.dragModule',
activeClass:'active-droppable',
drop:function(){
console.log('drop');
}
});
$('#dropableArea').sortable({accept: '.dragModule',connectWith: '#dropableArea',revert: true,});
$("#dropableArea").disableSelection();
});
我的问题是我控制台console.log('drop');这是可放置的回调放置函数,它被调用了两次。
最佳答案
这是jQuery UI的已知问题。当您在同一元素上使用droppable和sortable时,会发生此问题。在这里,您在同一元素droppableArea
上使用droppable和sortable
为了解决此问题,请使用drop
的droppable
方法代替recieve
的sortable
方法。在您的情况下,两者都做相同的事情。
检查FIDDLE
$(function() {
$('.dragModule').draggable({
connectToSortable: '#dropableArea',
helper: 'clone'
});
$('#dropableArea').droppable({
accept: '.dragModule',
activeClass: 'active-droppable'
});
$('#dropableArea').sortable({
accept: '.dragModule',
connectWith: '#dropableArea',
revert: true,
receive: function (event, ui) {
console.log("drop");
}
});
$("#dropableArea").disableSelection();
});
更改上面的代码,它将解决问题。请让我知道问题是否已解决
#UPDATE
您可以在可排序函数中添加以下代码
beforeStop : function (event, ui) {
ui.helper.html('hello');
}
关于javascript - jQuery UI drop事件的可转换触发两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55535947/