2016-08-31 4 views
0

Ajax없이 DataTables에 대한 행 세부 정보를 생성하고 있습니다. everythink는 괜찮습니다,하지만 난 숨기기 위해 다시 클릭 할 때 나는 오류가 점점 -잡히지 않은 TypeError : row.child.hasClass가 함수가 아닙니다.

$(document).ready(function() { 
    function format (name, value) { 
     return '<div>Name: ' + name + '<br />Value: ' + value + '</div>'; 
    } 
    var table = $('#servicetable').DataTable({ 
     stateSave: true, 
     pageLength: 10, 
    }); 

    $('#servicetable tbody').on('click', 'button.test', function() { 
     var tr = $(this).closest('tr'); 
     var row = table.row(tr); 
     row.child(format(tr.data('child-name'), tr.data('child-value'))).show(); 

     if (row.child.hasClass('shown')) { 
      // This row is already open - close it 
      row.child.hide(); 
      tr.removeClass('shown'); 
     } 
     else { 
      // Open this row 
      row.child(format(row.data())).show(); 
      tr.addClass('shown'); 
     } 
    }); 
}); 

내가 개방을위한 버튼을 클릭하면 :

Uncaught TypeError: row.child.hasClass is not a function 

나쁜 무엇
나는 쇼 같은 somethink합니까? JSFiddle

+0

'child'는 기능입니다. 이미 함수로 사용하고 있습니다. 'hasClass'는이 함수 호출의 결과에 적용될 수 있지만 함수 자체에는 적용될 수 없습니다. (당신이'show()'를 호출 할 때) – Maxx

+0

열려있는 자식 행에 대해서는'row.child'가 존재하지 않습니까? 'row.child (형식 (tr.data ('child-name '), tr.data ('child-value '))) .show();'를'else { '범위로 이동하십시오 .... – davidkonrad

+0

'row.child(). hasClass ('show')' – DavidDomain

답변

0

확인이 jsfiddle

데이터 테이블 아이 doesn't seem to provide a hasClass 기능 : 여기
데모입니다. 또한 잘못된 요소에 '표시된'클래스가 있는지 확인 중이라고 생각합니다. 나는 또한 열 때 row.child.show()을 제거했습니다. 이미 if 문 앞에 수행되었습니다.

 if (tr.hasClass('shown')) { 
      // This row is already open - close it 
      row.child.hide(); 
      tr.removeClass('shown'); 
     } 
     else { 
      // Open this row 
      tr.addClass('shown'); 
     } 
관련 문제