2014-02-27 3 views
5

Jquery Datatables의 숨겨진 열에서 값을 가져와야합니다 (첫 번째로 표시되는 열에서). 지금까지 나는 JQuery DataTable에서 선택된 체크 박스를 사용하여 행을 가져 오는 방법

bodytable$ = $('#dataTable').dataTable({ 
    "bJQueryUI" : true, 
    "bPaginate" : true, 

    "bSort" : false, 
    "bFilter": false,  
    "aoColumns": [{"bVisible": false}, 
        {"bVisible": true}, 
        {"bVisible": true}, 
        {"bVisible": true}], 

    "oLanguage": { 
     "sEmptyTable": '', 
     "sInfoEmpty": '', 
     "sZeroRecords": '' 
    } 
}); 

있어 내가

이 라인 VAR rowData 하행 = bodytable $ .fnGetData (TR)에 실패
var checkIds = []; 

    $('input[type="checkbox"]:checked', bodytable$.fnGetNodes()).each(function(i){ 
     var tr = $(this).closest('tr'); 
     var rowData = bodytable$.fnGetData(tr); 
     checkIds.push(rowData[0]); 
    }); 
    alert(checkIds); 

에 숨겨진 열에서 값을 받고 있어요; Firefox에서 오류 메시지를 표시하는 디버그 TypeError : a.nodeName이 정의되지 않았습니다.

숨겨진 열이 실제로 브라우저에로드 된 HTML에 나타나지 않기 때문에 DataTable API를 사용해야합니다. 선택된 체크 박스가 같은 페이지에 없을 때 데이터 값을 선택할 수 있습니다.

mainguys 응답에 이어 bVisible 속성 대신 CSS를 사용하여 열을 숨기면 원하는 결과를 얻을 수 있습니다.

var checkIds = []; 
    $('input[type="checkbox"]:checked', bodytable$.fnGetNodes()).each(function(i){ 
     var tr = $(this).closest('tr'); 
     checkIds.push($(tr).find('td:eq(0)').text()); 
    }); 
    alert(checkIds); 

답변

5

트릭을 수행하는 방법을 찾았습니다.

열을 숨기지 말고 그냥 display:none 인 클래스를 지정하십시오.

"aoColumns": [{ 
    "bVisible": true 
}, { 
    "bVisible": true, sClass:"hideme" 
}, { 
    "bVisible": true 
}] 

CSS :

.hideme { 
    display:none; 
} 

지금이 그들을 찾을 :

var checkIds = []; 
    bodytable$.$('tr').each(function(index,rowhtml){ 
     var checked= $('input[type="checkbox"]:checked',rowhtml).length; 
     if (checked==1){ 
     checkIds.push($('.hideme',rowhtml).text()); 
     } 
    }); 
    alert(checkIds); 

예, 나는 이것이 매우 우아 아니라는 것을 알고 있지만, 그것을 작동합니다. Try it here

+0

너는 천재 야! 트릭은 말한 것처럼 dataTable bVisible 속성 대신 CCS를 사용하여 열을 숨기는 것입니다. 이제 HTML에 열이 남고 내 질문을 편집하여 최종 솔루션을 제공했습니다. – user497087

관련 문제