【问题标题】:jQuery droppable / draggablejQuery 可拖放/可拖动
【发布时间】:2008-11-12 09:14:27
【问题描述】:
目前我有一组 div,由 php 动态生成,它们的 id 都以“itembox”开头,并附加了一个计数。我在页面上有一个可放置的垃圾箱区域,以便用户可以通过拖放到垃圾箱中来删除单个项目框。
我的问题是,当我拖动原始文件时,droppable 似乎不会激活,而当我设置了 helper: 'clone' 时它会(完美地)起作用。不幸的是,当拖动时,克隆函数从 itembox 的第一次迭代中获取它的克隆,无论实际拖动哪个 itembox。
所以我正在寻找一种解决方案,要么让 droppable 接受原件,要么强制克隆功能从实际拖动的 itembox 中获取其克隆。
【问题讨论】:
标签:
jquery
jquery-ui-draggable
jquery-ui-droppable
【解决方案1】:
我想问题一定出在您的可放置初始化程序的接受选项上。只需尝试以下方法:
$('#mydroppable').droppable(
{
accept: function() { return true; },
drop: function () { alert("Dropped!"); }
});
现在这将接受所有内容,因此您可能应该在接受函数中实现一些过滤,但是这应该可以工作。
【解决方案2】:
您也可以尝试以下解决方案。
<script type="text/javascript">
$(document).ready(function(){
$('.srcfield').draggable({
revert: true
});
$('#trash').droppable({
accept : ".srcfield",
over: function(){
$(this).removeClass('out').addClass('over');
},`enter code here`
out: function(){
$(this).removeClass('over').addClass('out');
},
drop: function(ev, ui){
//var answer = confirm('Delete this item?');
var theTitle = $(ui.draggable).attr("title");
$(this).html("<u>"+theTitle+"</u><br/> is deleted!");
}
});
});
</script>
<body>
<div id="trash" class="out">
<span>Trash</span>
</div>
<div id="sourcefields">
<div class="srcfield" title="First Name"><span>First Name</span></div>
<div class="srcfield" title="Last Name"><span>Last Name</span></div>
<div class="srcfield" title="Age"><span>Age</span></div>
</div>
</body>