如何根据条件恢复jquery UI可拖动的位置

如何根据条件恢复jquery UI可拖动的位置,jquery,jquery-ui-draggable,jquery-ui-droppable,Jquery,Jquery Ui Draggable,Jquery Ui Droppable,我有一个可拖动的元素和一个可拖放的元素。将拖动的项目拖放到dropzone后,我将尝试执行以下jquery psuedo代码: if(draggedelement == value){ $(draggedelement).hide(); } else{ $(draggedelement).revert(); } 其中,revert()函数将拖动的项目移回其原始位置 如何才能做到这一点? 另外,我知道可拖动的“还原”选项,但这仅在被拖动的项目未到达dropzone时激活。尝试将该代码添加

我有一个可拖动的元素和一个可拖放的元素。将拖动的项目拖放到dropzone后,我将尝试执行以下jquery psuedo代码:

if(draggedelement == value){

$(draggedelement).hide();

}
else{

$(draggedelement).revert();

}
其中,
revert()
函数将拖动的项目移回其原始位置

如何才能做到这一点?


另外,我知道可拖动的“还原”选项,但这仅在被拖动的项目未到达dropzone时激活。

尝试将该代码添加到“drop”事件中。这是一本书

HTML


正如您在脚本中看到的,您可以查找
.correct
类或内部的文本(注释掉的行)

有一些内置选项,在您的上,将设置为
'invalid'
,如果未成功将其放在可拖放文件上,它将返回,如下所示:

$("#draggable").draggable({ revert: 'invalid' });
$("#droppable").droppable({ 
  accept: function(dropElem) {
    //dropElem was the dropped element, return true or false to accept/refuse it
  }
});​
然后,在您的集合中,使用以下命令可以删除哪些内容,例如:

$("#droppable").droppable({ accept: '#draggable' });​
任何与此选择器不匹配的内容都将在释放时重置。如果需要筛选选择器无法提供的内容,则accept选项也会使用一个函数,如下所示:

$("#draggable").draggable({ revert: 'invalid' });
$("#droppable").droppable({ 
  accept: function(dropElem) {
    //dropElem was the dropped element, return true or false to accept/refuse it
  }
});​
这用于从一组可拖动对象中仅接受一个可拖动对象;到一个正确的可拖放,在一组可拖放中


p.S如果语言不可理解,那么很抱歉=)

我有一个用例,我必须在Dropable的drop方法中运行一些逻辑,以确定Dragable是否应该恢复。为此,我采用了以下方法:

$('.draggable元素').draggable({
revert:function(){
if($(this).hasClass('drag-revert')){
$(this.removeClass('drag-revert');
返回true;
}
}
});
$('.droppable元素')。droppable({
drop:函数(事件、用户界面){
如果(%conditional logic check here%){
返回$(ui.draggable).addClass('drag-revert');
}
}

});我发现,如果我简单地将top:0和left:0设置为0,则该项不再可拖动。为了“强制”恢复,我必须这样做:

$draggedObj.css({ top: 0, left: 0 })
$draggedObj.draggable( "destroy" )
$draggedObj.draggable({...whatever my draggable options are...});

@Nick Craver,我可以请您在这里看一个jQuery可拖放的相关问题:?在我看来,这是最优雅的解决方案。使用Dropable
accept
太过分了,因为它将随着可拖动设备的每次移动进行评估。相反,drggable
revert
仅在实际删除drggable时计算一次。
$draggedObj.css({ top: 0, left: 0 })
$draggedObj.draggable( "destroy" )
$draggedObj.draggable({...whatever my draggable options are...});