我有一个带有一些droppable和draggable的应用程序,并且我想为一种类型的draggable(具有给定的类)执行此操作,而该draggable只能放在一种类型的droppable上。
问题在于它取决于类,在开始时,可拖动对象可以在网格中的任何地方拖动:
$('.grid-drop').droppable({
accept: '.block',
hoverClass: 'hovered',
drop: handlePublishBlock
});
所以我要做的是,当我开始拖动元素时,像这样改变网格的接受度:
$('.grid-drop').droppable({
accept: '.unknown-class',
hoverClass: 'hovered',
drop: handlePublishBlock
});
但是似乎不起作用,我仍然可以将自己的元素拖到网格上。
我想做的是将此类的元素只能拖到一滴,然后再拖一次,所以这是我的实际代码:
$(".draggable-one")
.mousedown(function() {
$('.grid-drop').droppable({
accept: '.unknown-class',
hoverClass: 'hovered',
drop: handlePublishBlock
});
console.log("mousedown");
isDragging = false;
})
.mousemove(function() {
console.log("mousemove");
isDragging = true;
})
.mouseup(function() {
console.log("mouseup");
var wasDragging = isDragging;
isDragging = false;
if (wasDragging) {
$('.grid-drop').droppable({
accept: '.block',
hoverClass: 'hovered',
drop: handlePublishBlock
});
$(this).draggable('disable');
$(this).removeClass('block-draggable');
}
});
当我开始拖动时,我禁用了网格上的拖放(但似乎不起作用),而当我拖放到网格以外的其他字段(只有一个域)时,该元素不能再次拖动。此方法有效,但是禁用和重新启用网格无效。
有人可以帮助我吗?谢谢。
答案 0 :(得分:0)
没有看到完整的代码,很难提供帮助。我建议这样的事情:
$(function(){
var $grid = $('.grid-drop').droppable({
accept: '.block',
hoverClass: 'hovered',
drop: handlePublishBlock
});
var isDragging = false;
$(".draggable-one").draggable({
start: function(e, ui){
$grid.droppable("option", "accept", ".draggable-one");
console.log(e.type);
isDragging = true;
},
stop: function(e, ui){
$grid.droppable("option", "accept", ".block");
console.log(e.type);
isDragging = false;
}
});
});