2012-11-07 4 views
0

목록 항목을 정렬되지 않은 목록에서 다른 목록으로 이동하려고합니다. 업데이트가 발생하면 update.js.erb가 호출됩니다 (오류없이 로그에서 호출되는 것을 볼 수 있음).목록 항목을 정렬되지 않은 목록에서 다른 목록으로 이동

나는 jQuery에 익숙하지 않으므로 무지로 사과한다.

<% if @task.complete? %> 
    $('#task_<%= @task.id%> li').detach().appendTo($('#complete_tasks ul')); 
    $.('#complete_tasks').sortable_list(); 
<% else %> 
    $('#task_<%= @task.id %> li').detach().appendTo($('#incomplete_tasks ul')); 
    $.('#incomplete_tasks').sortable_list(); 
<% end %> 

나는 .detach()가 How to move an item from one list to another?

에서 나는 많은 다른 형태를 시도했지만 내 생각 엔 내가 목록 또는 목록 항목을 잘못 선택 해요입니다 보았다.

/모든 의견을 크게 환영합니다! :) 업데이트 1

:

ul id="complete_tasks" data-update-url="http://localhost:3000/tasks/sort_incomplete" class="ui-sortable" 
    li class="task" id="task_1" 
    ... 

와 유사하게 incomplete_tasks

ul id="incomplete_tasks" data-update-url="http://localhost:3000/tasks/sort_complete" class="ui-sortable" 
    li class="task" id="task_7" 
    ... 

업데이트 2 : 내가 원래 그것을 테스트 할 때 다음 작업 결국 무엇인가, 나는이 후 다른 함수 호출을했다 문제를 일으켰습니다.

<% if @task.complete? %> 
    $('#complete_tasks').append($('#task_<%= @task.id %>')); 
<% else %> 
    $('#incomplete_tasks').append($('#task_<%= @task.id %>')); 
<% end %> 

여분의 $ (...)없이이 함수는 # task_2를 인쇄하므로 불필요한 함수 호출이 삭제되고 모든 것이 잘 작동했습니다.

+0

분리 할 필요가 없습니다. appendTo (또는 append)를 사용하면 요소를 이동합니다. 복사본을 만들지 않습니다. 또한,'appendTo'에서'$()'를 없애십시오 - 당신은 #ID가 필요합니다 – Archer

+0

조언을 많이 주셔서 감사합니다! 나는 $() 사용법이 잘못되었음을 깨닫지 못했다! 또한 chrome은 요소의 id (또는 다른 형태의 식별 정보)가 다음과 같다고 생각합니다 : li # task_1.task task_ # 형식의 모든 ID가 고유하더라도이 요소를 참조해야합니다. id , 클래스를 올바르게 선택하려면? – Fatlad

+1

요소를 선택하려면 ID 만 필요합니다. 요소 유형 및 클래스가 필요하지 않습니다. – Archer

답변

1

내부의 UL에 #task_에서 모든 목록 항목을 이동합니다. appendTo (또는 추가)을 사용하면 요소가 이동합니다. 복사본을 만들지 않습니다. 또한 appendTo에서 $()을 제거하십시오. # ID 만 있으면됩니다. 태그 이름과 클래스가 필요 없기 때문에 ID 만 있으면 요소를 선택할 수 있습니다.

1

$('#task_<%= @task.id%> li').appendTo('#complete_tasks ul'); 

충분해야하지만 당신은 분리 할 필요가 없습니다 complete_tasks

+0

답장을 보내 주셔서 감사합니다. 어떤 이유로 그것은 작동하지 않습니다. 나는 관련 목록과 목록 항목의 HTML로 나의 질문을 짐작해야한다고 생각했다. – Fatlad

관련 문제