首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTables中使用jQuery的复选框排序

问DataTables中使用jQuery的复选框排序
EN

Stack Overflow用户
提问于 2013-04-04 23:43:36
回答 10查看 20.9K关注 0票数 9

我一直在尝试对DataTables jQuery插件中的复选框字段进行排序,以检查和取消选中。

我在表中创建输入(复选框),如下所示:

代码语言:javascript
复制
'<input type="checkbox" '+ check +' />'

check包含文本"checked“或"”。

到目前为止,我只尝试添加DOM复选框类型的排序,如下所示:

代码语言:javascript
复制
{ "sSortDataType": "dom-checkbox" }

当我使用插件的API文档的全部代码时,我会得到以下错误:

未定义的TypeError:无法读取我的控制台中未定义的属性'afnSortData‘。

Problem:按下列标题不会按选中或未选中的复选框对列进行排序。

我想得到关于如何修复上述错误的建议,或者只使用jQuery和插件的方法进行排序的另一种方法。

谢谢。

编辑

只是尝试了一个固定的代码-没有错误。但是排序是混乱的:它只是相互替换,而不是排序。例如:如果我选中了1个复选框,而9个没有选中,则复选框将从第三位切换到第六位,然后再切换到第三位,等等。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-04-13 07:54:13

我所做的是在隐藏的P中创建一个bool,所以它将在相同的位置上,因为checkbox.than,我禁用了复选框中的更改值的选项,并且排序现在正在工作。

票数 11
EN

Stack Overflow用户

发布于 2015-05-21 13:12:12

我不得不稍微修改一下Moby's Stunt Double提供的答案。不需要额外的排序插件!只是一些定制的编码。

谢谢所有的想法,各位!由于某些原因,我不得不对我的桌子做特殊处理,这不是一个通用的解决方案。对我来说很好。

我的复选框被禁用,并通过编程进行了检查,因此我无法调用.checked。基于iColumn的调用也抛出了一些东西;可能是因为我有第0列隐藏的内容。

这就是对我有用的东西:

代码语言:javascript
复制
$.fn.dataTableExt.afnSortData['dom-checkbox'] = function  ( oSettings, iColumn ) {
    var aData = [];
    $(oSettings.oApi._fnGetTrNodes(oSettings)).each( function () {
        var checker = $(this).find('.classOnSurroundingSpan input');
        aData.push( checker.prop("checked")==true ? "1" : "0" );
    } );
    return aData;
}

我的标记看起来如下(周围的跨度是启用跟踪单击禁用复选框的解决方案的一部分):

代码语言:javascript
复制
<span class='classOnSurroundingSpan'><input type='checkbox' disabled='disabled'/></span>

我的表定义(部分)是:

代码语言:javascript
复制
"aoColumnDefs": [
    {"sSortDataType": "dom-checkbox",
    "aTargets":[1],
    "asSorting": ["desc"]}
]
票数 4
EN

Stack Overflow用户

发布于 2013-04-04 23:47:00

找到这个例子:

代码语言:javascript
复制
$.fn.dataTableExt.afnSortData['dom-checkbox'] = function  ( oSettings, iColumn )
{
    var aData = [];
    $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
        aData.push( this.checked==true ? "1" : "0" );
    } );
    return aData;
}

初始化如下:

代码语言:javascript
复制
$(document).ready(function() {
    $('#example').dataTable( {
        "aoColumns": [
            null,
            null,
            null,
            null,
            null,
            { "sSortDataType": "dom-checkbox" }
        ]
    } );
} );

这里:sort.html

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15823626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档