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() ?

我尝试了许多不同的形式,但我的猜测是我选择了错误的列表或列表项。

非常感谢任何/所有反馈!:)

更新1:

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

同样,不完整的任务

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 所以我添加了它并删除了错误的函数调用,一切都很好!

4

2 回答 2

1

你不需要分离。如果您使用appendTo(或附加),那么它会移动元素。它不会创建副本。$()此外,摆脱appendTo- 你只需要#ID。而且您只需要 ID 即可选择一个元素 - 不需要标签名称和类。

于 2012-11-09T09:20:15.783 回答
1

这应该足够了

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

但这会将下面的所有列表项移动#task_到 ul 里面complete_tasks

于 2012-11-07T17:08:13.687 回答