我剛剛創建了一個小例子,如何可以做到這一點: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