我刚刚创建了一个小例子,如何可以做到这一点:Fiddle
每当员工在任务回落,员工ID添加到作为数据属性存储在任务上的数组。如果员工已被分配到该任务,则不能再次添加他/她。
这不是完整版本,我没有关心如何从指定的任务中删除员工并相应地调整数组,这只是一个示例,如何解决该问题,避免将同一员工分配给同一个任务两次。如果这可以满足您的要求,将其调整为适用于您现有的员工和任务列表应该不成问题。
在小提琴中,我保存了console.log消息,因此更容易检查不同数组/数据属性中已有的内容。
$(function() {
$(".people").draggable({
containment: ".container",
helper: 'clone'
});
$("#tasks li").droppable({
accept: '.people',
greedy: true,
drop: function (e, ui) {
var newOne = ui.draggable.clone().removeAttr("style"),
jobId = $(this).attr("id"),
peopleId = newOne.attr("id");
if (false === arrayHelper(jobId, peopleId)) {
alert(peopleId + " already assigned to " + jobId);
} else {
$(this).find("ul").append(newOne);
}
arrayHelper(jobId, peopleId);
}
});
});
function arrayHelper(task, people) {
if ($("#" + task).data("people") == "")
{
holder = [];
holder.push("#" + people);
$("#" + task).data("people", holder);
}
else
{
if ($.inArray("#" + people, holder) != -1)
{
return false;
}
else
{
holder.push("#" + people);
$("#" + task).data("people", holder);
}
}
}
HTML这个例子:
<div class="container">
<ul id="tasks">
<li id="task1" data-people="">typing
<ul></ul>
</li>
<li id="task2" data-people="">phone
<ul></ul>
</li>
<li id="task3" data-people="">letters
<ul></ul>
</li>
</ul>
<div class="divide"></div>
<ul id="people">
<li class="people" id="people1">peter</li>
<li class="people" id="people2">paul</li>
<li class="people" id="people3">mary</li>
</ul>
</div>
什么是你想实现与'$( “#hiddenValueMember” +数据)'? – 2014-10-03 21:59:42
@FrédéricHamidi起初我只是用了一个有价值的li。但是,拖动时似乎无法获得正确的drop-id。我遇到这个问题后,我会再试一次。 – bflydesign 2014-10-04 11:17:03
@FrédéricHamidi我忘了说我使用隐藏的成员来保存值。它也必须让它与li值一起工作,我想...... – bflydesign 2014-10-04 11:42:19