1

この jQuery の例を使用しました: http://jqueryui.com/sortable/#connect-lists-through-tabs

<script>
$(document).ready(function() {
    $(function() {
    $( ".connectedSortable" ).sortable().disableSelection();
    var $tabs = $( "#tabs" ).tabs();

    var $tab_items = $( "ul:first li", $tabs ).droppable({
        accept: ".connectedSortable li",
        hoverClass: "ui-state-hover",
        drop: function( event, ui ) {
            var $item = $( this );
            var $list = $( $item.find( "a" ).attr( "href" ) )
            .find( ".connectedSortable" );

            ui.draggable.hide( "slow", function() {
                $tabs.tabs( "option", "active", $tab_items.index( $item ) );
            $( this ).appendTo( $list ).show( "slow" );
            });
        }
    });
});
  });
</script>

html:

<div id="tabs">
<ul>
    <li><a href="#Category1">Category1</a></li>
    <li><a href="#Category2">Category2</a></li>
</ul>

<div id="Category1">
    <ul id="sortable-Category1" class="connectedSortable ui-helper-reset">
        <li class="ui-state-default">Forum 1</li>
        <li class="ui-state-default">Forum 2</li>
    </ul>
</div>
<div id="Category2">
    <ul id="sortable-Category2" class="connectedSortable ui-helper-reset">
        <li class="ui-state-default">Forum 3</li>
        <li class="ui-state-default">Forum 4</li>
    </ul>
</div

しかし、アイテムを並べ替えたときにリスト内の何かを変更するときは、それが必要です。AJAXなどを介してデータベースに変更を書き込む方法は知っていますが、リスト内の何かがドラッグドロップされたときにどのメソッドが呼び出されますか+上記の既存のjavascriptでこれを実装するにはどうすればよいですか?

そして、「order」という名前のデータベースのフィールドを使用できるように、「[id-of-the-li-item]-[number in the list]」の形式でリストの順序を取得する方法はありますか' アイテムの順序はどこで指定されますか?

これで達成したいことは次のとおりです。カテゴリとフォーラムを備えたフォーラムがあります。上記のコードを使用して、フォーラム/カテゴリを並べ替えたい (カテゴリ内のフォーラムの順序と、フォーラムを他のカテゴリに移動する)

4

1 に答える 1

2
        $( ".connectedSortable" ).sortable({
            update: function (event, ui) {
                var newSeq = [], p = ui.item.parent(), parentId = p.parent().prop('nodeName') === "LI" ? p.parent().attr('id') : 0;
                ui.item.parent().children().each(function () {
                    newSeq.push(this.id);
                });
                // here you have newSeq... now update it via ajax
            }
        });

これは要素の ID に依存します。にIDがありますnewSeq[]

于 2013-05-09T15:16:12.947 に答える