0

注文をデータベースに保存するソート可能なシリアライズを使用しています。これは、ソートしているリストが変更された(つまり、ドラッグされた)ときに正常に機能します。ただし、ページの読み込み時にアイテムの順序を自動シリアル化したいと考えています。

以下を使用してデータをソートしています。

$(".menuSubSection_"+ <? echo $id; ?> +" ul.sortableSub").sortable({
                connectWith: "ul.sortableSub",
                placeholder: "ui-state-highlight",
                update: function(){
                $('#saved').html('ORDER CHANGED + SAVED');
                $('#saved').fadeIn( function(){
                $(this).delay(2000).fadeOut(); 
                });
                saveOrderSub('<? echo $id; ?>');

                },
                start: function(event, ui) {
                $('ul.sortableSub').find('li:hidden').show();

                }
});
});

そして、シリアライズをデータベースに保存する次の関数:

function saveOrderSub(menuid){

       var order = $(".menuSubSection_"+ menuid +" ul.sortableSub").sortable("serialize"); //
       $.post("../lib/saveOrderSub.php?menuID=" + menuid ,order,function(theResponse){

               $('#saved').html(theResponse);
               $('#saved').fadeIn( function(){
                $(this).delay(2000).fadeOut(); 
               }); 
                //reloadMenu();
                reloadMenuNav();
                     });
       event.preventDefault();
}

ロード時に呼び出されるようにヘッダー セクションに追加しようとしましたsaveOrderSub(menuid)が、シリアライズとポストが機能していないようです。

イベントをトリガーするためにリストの順序を変更せずに、この機能を機能させる方法について誰かが光を当てることができますか?

4

2 に答える 2

0

jQuery UI Sortable APIには、「create」というイベントがあります。ドキュメントには、このイベントはソート可能が作成されたときにトリガーされると書かれています。多分これはあなたを助けることができますか?現在の実装では、次のようになると思います。

$(".menuSubSection_"+ <? echo $id; ?> +" ul.sortableSub").sortable({
            connectWith: "ul.sortableSub",
            placeholder: "ui-state-highlight",
            //new
            create: saveOrderSub('<? echo $id; ?>'),
            update: function(){
            $('#saved').html('ORDER CHANGED + SAVED');
            $('#saved').fadeIn( function(){
            $(this).delay(2000).fadeOut(); 
            });
            saveOrderSub('<? echo $id; ?>');

            },
            start: function(event, ui) {
            $('ul.sortableSub').find('li:hidden').show();

            }
});
于 2013-04-28T00:43:37.320 に答える
0

これを試してください(jQueryの後のどこでも):

<script>
  $(function(){
    saveOrderSub('<? echo $id; ?>');
  });
</script>
于 2013-04-28T00:29:59.717 に答える