我有一些盒子和一些文字。我将文本拖到那个框中。
应当拖动的文本的html是:
<div class="module-drag-text ui-draggable ui-draggable-handle">text1</div>
<div class="module-drag-text ui-draggable ui-draggable-handle">text2</div>
<div class="module-drag-text ui-draggable ui-draggable-handle">text3</div>
和我在其中拖动该文本框的html是:
<div class="module-drag-box ui-droppable"></div>
<div class="module-drag-box ui-droppable"></div>
<div class="module-drag-box ui-droppable"></div>
因此整个html看起来像这样:
<div class="wrapper">
<div class="module-drag-text ui-draggable ui-draggable-handle">text1</div>
<div class="module-drag-text ui-draggable ui-draggable-handle">text2</div>
<div class="module-drag-text ui-draggable ui-draggable-handle">text3</div>
<div class="module-drag-box ui-droppable"></div>
<div class="module-drag-box ui-droppable"></div>
<div class="module-drag-box ui-droppable"></div>
</div>
现在,我要的是
text1
应该只放到第一个droppable
div上,而text2
放到第二个droppable
div上。如果用户尝试将
text1
拖动到第二个droppable
div中,则应将其反弹回其原始位置。我为拖放编写的代码是:
drag : function() {
dragText.draggable({
containment : ".popup",
revert : "invalid"
});
dragBox.droppable({
drop : function(event, ui) {
var drop = jQuery(event.target);
drop.html(ui.draggable.html());
ui.draggable.remove();
drop.droppable("destroy");
}
});
},
但是我不应该在哪里写逻辑。我知道它具有
accept
属性,但是根据我的问题,我不知道如何使用它。 最佳答案
您可以使用accept
选项
接受选项确定哪个元素(或元素组)是
被目标可投放对象接受。
使用revert
选项将可拖动对象恢复到原始位置
$("#draggable, #draggable-nonvalid").draggable({ revert: 'invalid' });
$("#droppable").droppable({
accept: '#draggable-nonvalid',
});
请参阅下面的演示,我在其中完成了将文本1放入droppable的演示,其余的文本则不会放入该droppable。同样,你可以休息
Working Demo
Working Demo 2-用于动态接受选择
$(".dragg").draggable({ revert: 'invalid' });
$("#droppable").droppable({
accept: function(d){if($(this).hasClass(d.attr("id"))){return true;}},
});
关于jquery - jQuery droppable:根据条件删除项目,否则反弹,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39226224/