如何禁用列表的第一项可排序并删除目标

Mat*_*man 4 jquery jquery-ui ruby-on-rails

我有一个项目列表,我想让列表中的第一个项目不可排序和不可移动。列表中的第一项应始终作为列表中的第一项。但是,我似乎无法让它工作。这是我的排序代码:

jQuery ->
  $('#lineup').sortable(
    axis: 'y'
    items: ".ui-state-enabled"
    cancel: ".ui-state-disabled"
    update: ->
      $.post($(this).data('update-url'), $(this).sortable('serialize'))
  );
Run Code Online (Sandbox Code Playgroud)

我正在使用 content_tag_for 加载它:

%ul.nav.nav-tabs.nav-stacked#lineup{"data-update-url" => sort_lineups_url}
  - @pieces.each_with_index do |piece, index|
    - if index == 0
      = content_tag_for(:li, piece, :class => 'ui-state-disabled') do
        = link_to "#{(index + 1).to_s + ' - ' + piece.name}", '#'
    - else
      = content_tag_for(:li, piece, :class => 'ui-state-enabled') do
        = link_to "#{(index + 1).to_s + ' - ' + piece.name}", '#'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我所做的一切似乎都无法阻止对第一项进行排序和/或移动

Bee*_*oot 5

嗯,很难确定。我以前没有使用过 sortable/draggable 组合,而且 UI 文档没有明确解决 sortable/draggable 组合。

但是,从我在文档中阅读的内容来看,这样的事情应该可行:

$(function() {
    $("#lineup li").disableSelection().addClass('ui-state-default').eq(0).addClass('ui-state-disabled');//alternatively, write classes as HTML attributes
    $("#lineup").sortable({
        items: "li:not(.ui-state-disabled)" //should disable draggable and sortable
    });
});
Run Code Online (Sandbox Code Playgroud)