【问题标题】:jQuery UI: How to save "sortable"?jQuery UI:如何保存“可排序”?
【发布时间】:2015-02-09 07:18:15
【问题描述】:

我有一个“任务”列表,我正在使用“可排序”,以便用户可以优先考虑它们,将最重要的放在最前面。但是,当然,每次刷新页面时,它们都会回到原来的位置。我想知道是否可以保存任务的位置?

这是我的代码(这是一个 Rails 项目):

<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>

  <script>
    $(document).ready(function() {
      $('.move').sortable();
      });
  </script>


<%= render "form" %>



<div class="move">
<% if !@project.tasks.blank? %>
  <% for item in @project.tasks %>
  <div class="container">
  <div class="panel panel-default">
  <div class="panel-heading">
    <div class='move'><%= item.title %></div>
  </div>
  </div>
  <div class="panel-body">
  <p>
    <div class='move'><%= item.description %></div>
  </p>
  <%= link_to "Edit", edit_project_task_path(@project, item) %> 
  </div>
  </div>
  <% end %>
<% end %>
</div>

【问题讨论】:

标签: javascript jquery html css jquery-ui


【解决方案1】:

您可以使用jQuery cookie 并使用可排序的jQuery UI toArray 获取li 位置:

将可排序的项目 ID 序列化为字符串数组。

然后在负载中通过使用insertAftereq 选择器来改变li 的位置。

代码:

var savedOrd = $.cookie('sortOrder');
if (savedOrd) {
    $.each(savedOrd.split(','), function (i, e) {
        $('#' + e).insertAfter('#sortable>li:eq(' + i + ')');
    });
}

$('#save').click(function () {
    var saveOrd = $('#sortable').sortable('toArray');
    $.cookie('sortOrder', saveOrd);
});

演示:http://jsfiddle.net/IrvinDominin/amq6gt8w/

您可以调用两个服务器方法来设置和获取元素位置,而不是使用 cookie。

【讨论】:

  • 谢谢,这很有帮助。我仍在尝试将它与我自己的项目集成,但我似乎无法让它工作。我不太了解 jQuery,我只是想在我的 Rails 项目中实现这一 jQuery 功能。
【解决方案2】:

您可以找到任务的索引并保存它并在显示时根据索引进行排序。

要在 UI 上查找任务的索引,请参考: Fiddle

$("div").click(function(){
    var index = $("div").index($(this));
    var position =  index+1;
    $('span').html(position);
})

【讨论】:

  • 对不起,我发布了错误的代码。虽然我的形象,答案应该仍然是相同的,但我更新了原来的帖子。我对你的意思有点困惑(我几周前才开始编码)。你是说我应该用你发布的内容替换我的 jQuery?我试过了,我不能再移动任务了。
  • @roguerat 当然在页面刷新时它们会被删除。您必须将顺序保存在数据库或会话中,以便在刷新页面时可以按正确顺序对齐它们。
猜你喜欢
  • 2011-11-12
  • 2016-06-17
  • 1970-01-01
  • 2021-03-29
  • 2015-09-16
  • 2013-06-19
  • 2013-05-14
  • 1970-01-01
  • 2019-09-30
相关资源
最近更新 更多