목록 항목을 정렬되지 않은 목록에서 다른 목록으로 이동하려고합니다. 업데이트가 발생하면 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를 인쇄하므로 불필요한 함수 호출이 삭제되고 모든 것이 잘 작동했습니다.
분리 할 필요가 없습니다. appendTo (또는 append)를 사용하면 요소를 이동합니다. 복사본을 만들지 않습니다. 또한,'appendTo'에서'$()'를 없애십시오 - 당신은 #ID가 필요합니다 – Archer
조언을 많이 주셔서 감사합니다! 나는 $() 사용법이 잘못되었음을 깨닫지 못했다! 또한 chrome은 요소의 id (또는 다른 형태의 식별 정보)가 다음과 같다고 생각합니다 : li # task_1.task task_ # 형식의 모든 ID가 고유하더라도이 요소를 참조해야합니다. id , 클래스를 올바르게 선택하려면? – Fatlad
요소를 선택하려면 ID 만 필요합니다. 요소 유형 및 클래스가 필요하지 않습니다. – Archer