4

アイテムのリストがあり、リストの最初のアイテムを並べ替えおよび移動できないようにしたいと考えています。リストの最初の項目は、常にリストの最初の項目のままにする必要があります。しかし、私はそれを機能させることができないようです.hereは私のソートコードです:

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 に答える