2014-10-03 2 views
1

목록 항목을 끌어서 놓을 수있는 두 개의 열이 있습니다. 왼쪽에는 전체 employeelist가 한 명 있습니다. 멤버를 함수에 할당하는 여러 목록이 있습니다.jquery가있는 목록에 값이 존재하는지 확인하는 방법

구성원을 왼쪽에서 오른쪽으로 여러 번 끌 수 있는지 확인하려면 (각 직원이 여러 기능을 가질 수 있음) cloneNode를 사용합니다. 이제는 동일한 직원을 두 번 삭제하는 것을 방지 할 수있는 방법을 찾고 있습니다. 이 시도하지만, 개 실패 : 직원이 작업에서 삭제됩니다 때마다 Fiddle

는, 직원-ID가 추가됩니다 :

if (dropToID == "#lmn") { 
     if (($("#lmn li[value=" + data + "]").length) != 0) { 
      $(dropToID).append(document.getElementById(data).cloneNode(true));    
      $("#hiddenValueMember"+data).attr("name", "selectedLMN[]"); 
      save(); 
     } 
    } 
+0

당신은'$ ("#의 hiddenValueMember"+ 데이터)'으로 달성하려고하는거야? –

+0

@ FrédéricHamidi 처음에는 방금 값으로 리를 사용했습니다. 하지만 드래그 할 때 올바른 드롭 ID를 얻을 수없는 것처럼 보였습니다. 이 문제가 발생하면 다시 시도 할 것입니다. – bflydesign

+0

@ FrédéricHamidi 나는 값을 저장하기 위해 그 숨겨진 멤버를 사용한다고 깜빡했다. 리 값으로도 작동해야합니다. – bflydesign

답변

1

난 그냥 어떻게이 작업을 수행 할 수 있습니다 약간의 예를 만들었습니다 데이터 속성으로 태스크에 저장되는 배열. 직원이 이미 과제에 배정 된 경우 다시 추가 할 수 없습니다.
이것은 정식 버전이 아니며 할당 된 작업에서 직원을 삭제하고 그에 따라 배열을 조정하는 데 신경을 쓰지 않았습니다. 동일한 직원을 같은 작업에 두 번 할당하는 것을 피하면서 문제를 해결하는 방법의 예일뿐입니다. 이 방법이 귀하의 요구 사항에 맞을 경우 기존 직원 및 작업 목록과 함께 작동하도록 조정하는 것이 문제가되어서는 안됩니다.
피들에서 나는 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> 
관련 문제