4

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

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

我正在使用 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}", '#'

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

4

1 回答 1

5

嗯,很难确定。我以前没有使用过可排序/可拖动组合,而且 UI 文档没有明确说明可排序/可拖动组合。

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

$(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
    });
});
于 2012-07-03T23:22:18.727 回答