0

管理者が提出された目標をレビューするアプリのページに取り組んでいます。各目標は、<tr>3 つの異なるテーブルのうちの 1 つです。「レビュー」、「完了」、「送信済み」の 3 つのテーブルがあります。

それぞれに btn-group があり、<tr>現在のステータスに応じて承認、元に戻す、または拒否するオプションがあります。ステータスが変更されると、目的を含む が削除され、適切なテーブルに追加されます。

btn-group ドロップダウンを移動すると、動作が停止します。.dropdown();追加後に追加する必要があるのではないかと思ったのですが、うまくいきません。

サーバー側のデータを使用するこの b/c で JSfiddle をセットアップする方法がわかりません。誰か私に提案がありますか?

ここに私の現在のすべてのコードを含む JSfiddle があります: http://jsfiddle.net/xKLN4/

    approve: function(clicked) {
        var id = clicked.attr('data-id');
        $.post('<?=URL::to('supervisor/approve_objective')?>',{
            'id' : id,
            'trainee_id' : '<?=$trainee->id?>',
            'status' : 'completed' //or whatever it should be, one of 'submitted'|'completed'|'review'
        },
        function(data, textStatus){
            console.log('Post return data:');
            console.log(data);
            var status = data.status_translated;
            var lbl = $('.label-'+data.object.objective_id);
                    lbl.fadeOut('fast');
                    lbl.attr('class','label label-'+data.object.status+' label-'+data.object.objective_id)
                       .text(data.object.status_translated)
                       .fadeIn('fast');
                       clicked.closest('tr').children('td, th')
                               .animate({ padding: 0 })
                               .wrapInner('<div />')
                               .children()
                               .slideUp(function() { $(this).closest('tr').remove(); });

                    var row = clicked.closest('tr').html();

                    $('#approve-objectives-completed > tbody:last').append('<tr>'+row+'</tr>')
                                                                   .children('.dropdown-toggle')
                                                                   .dropdown();


        });


    },

コードを追加するために編集


layout:falseはexpress.js 3で機能しませんか?

Express.js でビューをレンダリングするときに、レイアウトのレンダリングをスキップしようとしています。テンプレート言語として jade を使用しています。私が使用するコード:

res.render("show", { job: data, layout: false });

何かアドバイス?レイアウトをレンダリングし続けます....

ありがとう

4

1 に答える 1

2

によって追加されているdivが原因で、ドロップダウンが機能していませんwrapInner('<div />')

td1つの解決策は、すべてを新しい行にコピーした後、最後にそのdivを削除することです...

approve: function(clicked) {

      clicked.closest('tr').children('td, th')
             .animate({ padding: 0 })
             .wrapInner('<div />')
             .children()
             .slideUp(function() { $(this).closest('tr').remove(); });

      var row = clicked.closest('tr').html();

      $('#approve-objectives-completed > tbody:last').append('<tr>'+row+'</tr>')

      //Remove div       
      var $lastTdDiv = $('#approve-objectives-completed > tbody > tr:last > td:last > div');  
      var contents = $lastTdDiv.contents();
      $lastTdDiv.replaceWith(contents);

「承認」機能に変更を加えたjsFiddleを次に示します。

于 2012-11-05T21:19:14.060 に答える