2011-07-17 15 views
1

テーブルに新しい行を追加する小さなオブジェクトがあります。ほとんどの場合はうまく動作しますが、一部の行(「ルート」テーブル内)にテーブルがあると、オブジェクトは適切なテーブルに追加されません!issue with insertBefore()

私はデバッグのビットを行うと、オブジェクトが適切なテーブル

var List = new function(){ 
    this.append_row = function(row, tbl, index){ 
     if(DEBUG){ 
      index = -1; 
     } 

     if(index == 0){ 
      row.prependTo(tbl); 
     } 
     else if(index > 0){ 
      var elm = $('tr', tbl); 
      if(elm.length > index){ 
       row.insertBefore(elm.eq(index)); // the issue is in this line 
      } 
      else{ 
       row.appendTo(tbl); 
      } 
     } 
     else{ 
      row.appendTo(tbl); 
     } 
    }; 
} 
+1

非常に紛らわしい質問...してください再言葉、それは –

+0

javascriptのは何のクラスを持っていない... – genesis

+0

ポテトポテト... – clarkk

答えて

2

に追加省略されているDEBUGが設定されている場合、すべてが...うまくいかないラインとのinsertBefore(行を)発見されていますだから、それをワット

var elm = $(tbl).find('tr'); 

var elm = $('tr', tbl); 

...これに相当します:これがあるからですすべてのネストされた<tr>要素が入れ子になっています。<table>

だから、これを行うことができます:

var elm = $(tbl.rows); // if `tbl` is the DOM element 

またはこれを:

var elm = $(tbl[0].rows); // if `tbl` is a jQuery object 

今すぐelmだけtblrowsへの参照ではなく、任意のネストされた<table>要素です。

+0

'tbl'はjQueryオブジェクト..です場合は、' VARのニレ= $(TBL [0]。行が); '置き換えられた行は適切なテーブルに追加されますが、最後に(-1として)最後に追加されます。 – clarkk

+0

デバッグのif文が削除されました.. – clarkk

+0

@clarkk:なぜそうなるのか分かりません。調査しています... – user113716