2011-07-17 4 views
1

테이블에 새 행을 추가해야하는 작은 객체가 있습니다. 대부분의 경우에 잘 작동하지만 일부 행 ("루트"테이블)에 테이블이있는 경우, 개체가 적절한 테이블에 추가하지 않습니다!?issue with insertBefore()

I 디버깅 약간 하 대상물 적절한 테이블

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

자바 스크립트에는 클래스가 없습니다 ... 제발 다시 단어 ... – genesis

+0

감자 감자 ... – clarkk

답변

2

에 추가 생략 DEBUG가 설정되면 모든 .. 잘못 선과에 insertbefore (가진 라인) 밝혀졌다 그래서 그것을 w

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