난 그냥 어떻게이 작업을 수행 할 수 있습니다 약간의 예를 만들었습니다 데이터 속성으로 태스크에 저장되는 배열. 직원이 이미 과제에 배정 된 경우 다시 추가 할 수 없습니다.
이것은 정식 버전이 아니며 할당 된 작업에서 직원을 삭제하고 그에 따라 배열을 조정하는 데 신경을 쓰지 않았습니다. 동일한 직원을 같은 작업에 두 번 할당하는 것을 피하면서 문제를 해결하는 방법의 예일뿐입니다. 이 방법이 귀하의 요구 사항에 맞을 경우 기존 직원 및 작업 목록과 함께 작동하도록 조정하는 것이 문제가되어서는 안됩니다.
피들에서 나는 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"+ 데이터)'으로 달성하려고하는거야? –
@ FrédéricHamidi 처음에는 방금 값으로 리를 사용했습니다. 하지만 드래그 할 때 올바른 드롭 ID를 얻을 수없는 것처럼 보였습니다. 이 문제가 발생하면 다시 시도 할 것입니다. – bflydesign
@ FrédéricHamidi 나는 값을 저장하기 위해 그 숨겨진 멤버를 사용한다고 깜빡했다. 리 값으로도 작동해야합니다. – bflydesign