jquery datatable 如何获取隐藏列的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery datatable 如何获取隐藏列的值相关的知识,希望对你有一定的参考价值。

隐藏的列是自增的主键,我想实现单击表里的行,显示某些数据,$("#operateTable tbody tr").live('click', function () groupid = $(this).children('td').eq(0).html();这样做可以得到不隐藏的列值,但是一隐藏就得不到了,请教大神怎么才能得到隐藏的ID值啊?

var tableTest; function initTable() tableTest = $('#tableTest').dataTable( "bJQueryUI": true, "sPaginationType": "full_numbers", "aaData": [ ['101', 'aaa', '91,1', '2012-10-10', 'X'], ['102', 'bbb', '92,5', '2012-3-19', 'X'], ['103', 'ccc', '89,5', '2013-3-21', 'X'], ['105', 'eee', '95', '2011-11-11', 'C'], ['104', 'ddd', '91', '2013-2-22', 'X'] ], 'aaSorting':[ [1,'asc'],[2,'asc'] ], 'aoColumns':[ 'sTitle':'ID', 'sWidth':'20%','sClass':'center', 'sTitle':'Name', 'sWidth':'20%','sClass':'center', 'sTitle':'Score','sWidth':'20%','sClass':'center', 'sTitle':'Date', 'sWidth':'20%','sClass':'center', 'sTitle':'downLoad', 'sWidth':'20%',"bVisible": false,"bSearchable": false, 'sClass':'center', "mRender": function ( data, type, full ) return '<input type="text" class="userName" value="'+data+'"/>'; ] ); $('#tableTest').find('.userName').each(function() console.log($(this).val()); );        有两个bVisible和bSearchable,如果设置bVisible:false,那么这列数据是不可访问的,bSearchAble:false是可以访问的,我感觉这边做的不是很好哎,就比方说我们一般都喜欢对表添加一列隐藏列,里面记录每行的id,方便数据访问,但是貌似这招这样不行。我想能不能用mReader来做,就比方上面代码,设置type='hidden',试验发现不行,看来我是明显天真了。但是想到mReader:function(data,type,full)其中的full就是这一列的所有信息,试验了一下,的却访问隐藏的那一列,那么通过这种变相的方法就可以访问隐藏的数据了。      总结一下,可以通过mReader:function(data,type,full)中的full参数获取一行所有信息(包括隐藏列),获取到的是一列字符串,然后通过spilt转换位数组,然后选取第几个。追问

我照你说的试了试还是不行,可能是我哪里做的不对。能不能给详细讲讲怎么做啊?多谢了!
我的datatable里aoColumns里的代码是这样的:

"aoColumns": [ "mData": "id" ,"bVisible": false ,//想获取的就是这里的id的值
"mData": "name" ] );

追答

你看看我说的visible为flase是获取不到隐藏列的值

你看看我说的visible为flase是获取不到隐藏列的值

追问

那我要怎么设置才能既实现隐藏的效果又能获取到隐藏列的值呢?麻烦了。。会给你多加分的!

追答

你看我给你回答的

有两个bVisible和bSearchable,如果设置bVisible:false,那么这列数据是不可访问的,bSearchAble:false是可以访问的,我感觉这边做的不是很好哎,就比方说我们一般都喜欢对表添加一列隐藏列,里面记录每行的id,方便数据访问,但是貌似这招这样不行。我想能不能用mReader来做,就比方上面代码,设置type='hidden',试验发现不行,看来我是明显天真了。但是想到mReader:function(data,type,full)其中的full就是这一列的所有信息,试验了一下,的却访问隐藏的那一列,那么通过这种变相的方法就可以访问隐藏的数据了。
总结一下,可以通过mReader:function(data,type,full)中的full参数获取一行所有信息(包括隐藏列),获取到的是一列字符串,然后通过spilt转换位数组,然后选取第几个。
//代码不全,就是那么个意思
'sTitle':'ID', 'sWidth':'20%','sClass':'center',
'sTitle':'Name', 'sWidth':'20%','sClass':'center',
'sTitle':'Date', 'sWidth':'20%','bVisible':false,'sClass':'center',
'sTitle':'downLoad', 'sWidth':'20%',"bSearchable": false, 'sClass':'center',
"mRender": function ( data, type, full )
return '';

]
);
var data;
$('#tableTest').find('.userName').each(function()
var data = $(this).val();
var s = data.split(",");
console.log(s[3]);
);

参考技术A $('#example').DataTable(       
"columnDefs": [    
        
          "targets": [ 6 ], //隐藏第六列,从第0列开始   
  "visible": false    
     
]   
);

这里有所有的api:

http://www.datatables.net/

参考技术B

楼主,

    你所谓的datatable指的是什么,是指页面上的table控件还是内存的中虚拟表格?

    推测可知是界面上的table控件。

    如果是table控件,那么

    <table>
            <tr>
                <td></td>
                <td style="display: none;"></td>
                <td style="visibility: hidden;"></td>
            </tr>
        </table>

    <script type="text/javascript">
        $(function ()
            var td1 = $("table").find("tr").children("td").eq(1);
            var td2 = $("table").find("tr").children("td").eq(2);
        );
    </script>

    上面的td1和td2都是可以取得td对象的,也就是说在jQuery中,无论这个元素是display:none还是visibility: hidden这两中隐藏方式,都可以被jQuery获取得到。

    因此认为你取不到td的原因可能是:

    这个td不是隐藏了,而是在界面上被移除了

    你获取的方法有不对的地方

追问

我说的datatable不是简单的页面上的table。。

追答

那你说的datatable是指什么?通常情况datatable是指内存中虚拟的表格

追问

算是jQuery的插件吧,在页面上自动生成表格,显示数据,可以设置一些属性。

追答

和我预期的一样,bVisible设置为false时界面上没有隐藏的这列的td,用jQuery也就访问不了

参考技术C 隐藏列的值一般情况下是可以获得的,只是不显示在界面上,他的值跟隐藏不隐藏没什么关系 参考技术D 这个应该是没有隐藏的行你能点击到,所以就能获得值了,而隐藏了的,在html中并不占据位置,你点击不到,就获取不了值了...你需要解决的是这个问题

如何遍历jquery数据表中的隐藏列

我有一个隐藏列的数据表。我想将该列的值设置为java脚本数组。 (注意:我想获取仅属于当前页面的值)。如果我使用搜索过滤器,我想要搜索结果的当前页面的值。

我试过这样的。

$('#datatbl').DataTable().rows({filter: 'applied'}).every(function () {
      var row = this.data();
      arr.push(row[0]);                    
}); 

但是,此代码提供了所有页面中的所有值。请帮忙....

答案

尝试在选择器中添加页面:'current'。

$('#datatbl').DataTable().rows({filter: 'applied', page:'current'})

以上是关于jquery datatable 如何获取隐藏列的值的主要内容,如果未能解决你的问题,请参考以下文章

如何遍历jquery数据表中的隐藏列

如何遍历jquery数据表中的隐藏列

获取DataTable中隐藏列的值

datatable隐藏列设置及获取隐藏列的值

jQuery Datatables - 无法从隐藏页面获取输入值

JQuery DataTables:如何显示/隐藏多个表的行详细信息?