2014-06-17 3 views
0

클릭 후 표시 할 하위 테이블을 추가하는 데 필요한 jquery 데이터 테이블 튜토리얼을 따르고 있습니다.javascript jquery datatables undefined가 함수가 아닙니다.

var table = $("#equipment_table").dataTable(
{ 
    "paging": false, 
    "ordering": false, 
    "info":  false 
}); 
$('#equipment_table tbody').on('click', 'td .pickup_button', function(){ 
    alert("clickee"); 
    var tr = $(this).closest('tr'); 
    var row = table.row(tr); 
    if(row.child.isShown()){ 
     //open , close it 
     row.child.hide(); 
     tr.removeClass('shown'); 
    }else { 
     row.child(buildChild(tr.attr('id'))).show(); 
     tr.addClass('shown'); 
    } 
}); 

여기를 클릭 리스너가 작동받은 후 PHP

echo '<td> <button class="delivery_button" id="'.$eid.'"> Delivery Status </button> </td>'; 
    echo '<td> <button class="pickup_button" id="'.$eid.'"> Pickup Status </button> </td>'; 
    echo '</tr>'; 
} 
echo '</tbody>'; 

의 HTML 버튼 정의입니다, 내가

+0

원하는 메시지를 사용해야하고'경고()'을 제외한 모든 것을 제거하면 작동합니까? 그렇지 않으면 PHP 대신 html을 확인하고 게시해야합니다. – jeroen

+0

'table'은 어디에 설정 되나요? 'var row = table.row (tr); ' – bloodyKnuckles

+0

@bloodyKnuckles는 실제로 문제가되어 테이블이 설정되지 않았습니다. 내가 그것을 설정 한 후, 클릭 작동하지만 jquery하지만 뭔가 정의되지 않습니다. 나는 오류가 발생합니다. 내 질문을 업데이트 할 것입니다. – Pita

답변

5

그것은 단지 var row = table.row(tr); 줄에이 오류

Uncaught TypeError: undefined is not a function 

를 얻을 수 케이스 문제. 이처럼 변수 table 정의해야합니다 :이 여기가 말한다 무엇 .DataTable() 오히려

.dataTable()보다 사용하는 방법

var table = $("#equipment_table").DataTable(
{ 
    "paging": false, 
    "ordering": false, 
    "info":  false 
}); 

공지 사항을 API Docs for DataTables : 사이의 차이를 주목해야 할

것이 중요하다 $(selector).DataTable()$(selector).dataTable(). 전자는 DataTables API 인스턴스를 반환하고, 후자는 jQuery 객체를 반환합니다.

API 인스턴스가 아닌 jQuery 객체가 반환되기 때문에 .row() 메서드는 정의되지 않았고 그 때문에 오류가 발생합니다.

희망이 있습니다.

+1

버전을 확인하십시오. 위의 답이 여기에 걸림돌이되는 경우 (개인용이 아니었던 경우), API를이 방법으로 호출하면 DataTables 1.10.x 이상에서만 작동합니다. 저는 벽에 머리를 대고 있었고 제가 1.9.x 지점에 있다는 것을 깨달았습니다. – dilettante

0

이 .DataTable()보다는 .dataTable을 (어떻게 사용하는지주의) 당신은 콘솔에서 var tr = $(this).closest('tr'); var row = table.row(tr); if (row.child.isShown()) { // This row is already open - close it row.child.hide(); tr.removeClass('shown'); } else { row.child(format(row.data())).show(); tr.addClass('shown'); }

관련 문제