2012-04-01 34 views
0

単純なjqueryダイアログボックスでデータテーブル(http://datatables.net/)を機能させるのに問題があります。ボタンをクリックしてボックスを開くと、約1秒間のデータテーブルが表示され、すぐに閉じることができます。どんな考えも非常に感謝します。DataTablesとjQueryダイアログボックスの問題

私のダイアログボックスを起動する機能を以下に示します。その中で、データテーブルが初期化されます。

function launchLocDialog(mydiv) { 
    alert(mydiv); 
    var oTable; 
    var giRedraw = false; 

    $(document).ready(function() { 
     $("#table_id tbody").click(function(event) { 
      $(oTable.fnSettings().aoData).each(function(){ 
       $(this.nTr).removeClass('row_selected'); 
      }); 

      $(event.target.parentNode).addClass('row_selected'); 
     }); 

     oTable = $('#table_id').dataTable({ 
      "aaData": [ /* Reduced data set */ 
       [ "1", "02/22/12"], 
       [ "2", "02/22/12"], 
       [ "3", "02/22/12"], 
       [ "4", "02/22/12"], 
       [ "5", "02/22/12"], 
       [ "6", "02/22/12"], 
       [ "7", "02/22/12"], 
       [ "8", "02/22/12"], 
       [ "9", "02/22/12"], 
       [ "10", "02/22/12"], 
       [ "11", "02/22/12"], 
       [ "12", "02/22/12"], 
      ], 
      "aoColumns": [ 
       { "sTitle": "Number" }, 
       { "sTitle": "Date Start" } 
      ] 
     }); 

     oTable.$('td').click(function() { 
      //var anSelected = fnGetSelected(oTable); 
      var sData = oTable.fnGetData(0,0); 
      //alert('The cell clicked on had the value of '+sData); 
      alert(sData); 

      //$.post('intsum.php', {intsumID: sData}); 

      // window.location = "intsum.php"; 
     }); 

    }); 

    $("#dialog:ui-dialog").dialog("destroy"); 

    $("#dialog").dialog({ 
     modal: true, 
     buttons: { 
      Ok: function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
} 
+0

slickGridをチェックアウトすることをお勧めします –

答えて

1

これについていくつかのテストを設定してみると、私の頭の上から外れています...あなたの名前付き機能の中にはドキュメントレディ機能があります。私はそれの完全な意味をテストすることができませんでしたが、一般的には完了していません。

DOMをスクリプト可能にするのを待つ必要のあるドキュメント準備機能は、oTableを設定するのに必要なものです。しかし、私は呼び出される名前付き関数の中に入れ子にしていると思います(ある時点では、コードの一部がサンプルに表示されません)が予期しない結果になるようです。

更新:

が、私は少しをまっすぐにしようとしたコード(ここでは、そこにいくつかの余分なかっこ、見当違いのコンマにいくつかの癖がありましたが、それのほとんどは原因を提供しようとする可能性があります簡単な例)、ほとんどの場合タイミングが崩れます。

上記のようにコードのタイミングが多かれ少なれで、表は表示されません。もちろん、希望を持っていても "launchLocDialog()"を呼び出す必要がありますが、それはどちらかといえません(おそらくサンプルから抜けていたかもしれません)。いずれにしても、機能をラップすることを取り除くとwindow.onLoadまたは文書レディ機能にすべてを入れて、テーブル自体は動作するようです:

http://live.datatables.net/exinum/4/edit#preview

あなたは文書レディ機能が表示されませんJSBinはwindow onLoadでコードを実行するので、冗長であったためです。あなたのコードでは、それらのいずれかを使用します。

だから、質問は次のようになります。

予想される動作は何ですか?テーブルがダイアログの中に表示されるのですか?ダイアログはポップアップするイベントはどこにありますか?元のlaunchLocDialog関数では、 "myDiv"を渡すことができるようですが、後で参照されないので、どの役割が果たそうとしているのか分かりません。