2013-09-23 4 views
1

(여기 JQuery와 UI를 사용하여)표시되는 항목은 항상 -1을 반환

바이올린 : http://jsfiddle.net/sP3UZ/2677/

목적 : 파란색 버튼 중 하나를 드래그하면, 다른 하나는 숨겨진 나는 이전 계산한다 dom에 index()를 통해 .user_task의 인스턴스.

내 선택기에 : visible 부분이 없으면 코드가 정상적으로 작동하고 클릭 한 항목의 합계가 이전 항목과 같아지고 다음과 같이 표시됩니다. 선택기에서 항상 -1이 표시됩니다.

$("#sortable").sortable({ 
    items: ".user_task", 
    appendTo: "body", 
    helper: "clone", 
    revert: true, 
    start: function(event, ui) { 
     var taskid = ui.item.data("taskid"); 
     $("[data-taskid='" + taskid + "']").not(ui.helper).hide(); 

     var x = $(".user_task:visible").index(ui.item); 
     $("#counter").text(x); 
    }, 
}); 

내 최종 결과가 있어야한다, 드래그 지난 파란색 버튼 (예를 들어) X = 2

+1

왜 당신이 찾고있는 보이는 인덱스? 이 특정 논리 논리적 인 필요가 무엇입니까 –

+0

로리의 대답에 대한 내 의견을 참조하십시오. –

+0

Irvin, 누를 수있는 항목 앞에있는 요소가 아닌 표시되는 요소 만 계산합니다 (코드에서 x = 4로 드래그하기 시작하면 x = 0이어야 함) –

답변

1

불쾌한 해킹

$("#sortable").sortable({ 
    items: ".user_task", 
    appendTo: "body", 
    helper: "clone", 
    revert: true, 
    start: function (event, ui) { 
     var taskid = ui.item.data("taskid"); 
     $("[data-taskid='" + taskid + "']").not(ui.helper).hide(); 

     var $usertasks = $(".user_task"); 
     var all = $usertasks.index(ui.item); 
     var hidden = $usertasks.slice(0, all).not(':visible').length; 
     var x = all - hidden; 

     $("#counter").text(x); 
    }, 
}); 

데모 : Fiddle

+0

드래그 할 때 여전히 동일한 결과가 나타납니다. "4"결과는 2 여야합니다. 여전히 숨겨진 요소를 계산합니다. –

+0

내가 볼 수있는 요소를 모두 집계하고 싶지 않습니다. 이전에 드래그 한 요소 만 표시합니다. –

+0

건배! 편집이 시작되었습니다! –

관련 문제