使用jQuery DataTables时,禁用第一列的自动排序

前端之家收集整理的这篇文章主要介绍了使用jQuery DataTables时,禁用第一列的自动排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用jQuery DataTables,我想知道是否有可能禁用自动排序的表的第一列?

我的代码看起来像这样:

/* Default class modification */
        $.extend( $.fn.dataTableExt.oStdClasses,{
            "sWrapper": "dataTables_wrapper form-inline"
        } );

        /* API method to get paging information */
        $.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )
        {
            return {
                "iStart":         oSettings._iDisplayStart,"iEnd":           oSettings.fnDisplayEnd(),"iLength":        oSettings._iDisplayLength,"iTotal":         oSettings.fnRecordsTotal(),"iFilteredTotal": oSettings.fnRecordsDisplay(),"iPage":          Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),"iTotalPages":    Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
            };
        }

        /* Bootstrap style pagination control */
        $.extend( $.fn.dataTableExt.oPagination,{
            "bootstrap": {
                "fnInit": function( oSettings,nPaging,fnDraw ) {
                    var oLang = oSettings.oLanguage.oPaginate;
                    var fnClickHandler = function ( e ) {
                        e.preventDefault();
                        if ( oSettings.oApi._fnPageChange(oSettings,e.data.action) ) {
                            fnDraw( oSettings );
                        }
                    };

                    $(nPaging).addClass('pagination').append(
                        '<ul>'+
                            '<li class="prev disabled"><a href="#">&larr; '+oLang.sPrevIoUs+'</a></li>'+
                            '<li class="next disabled"><a href="#">'+oLang.sNext+' &rarr; </a></li>'+
                        '</ul>'
                    );
                    var els = $('a',nPaging);
                    $(els[0]).bind( 'click.DT',{ action: "prevIoUs" },fnClickHandler );
                    $(els[1]).bind( 'click.DT',{ action: "next" },fnClickHandler );
                },"fnUpdate": function ( oSettings,fnDraw ) {
                    var iListLength = 5;
                    var oPaging = oSettings.oInstance.fnPagingInfo();
                    var an = oSettings.aanFeatures.p;
                    var i,j,sClass,iStart,iEnd,iHalf=Math.floor(iListLength/2);

                    if ( oPaging.iTotalPages < iListLength) {
                        iStart = 1;
                        iEnd = oPaging.iTotalPages;
                    }
                    else if ( oPaging.iPage <= iHalf ) {
                        iStart = 1;
                        iEnd = iListLength;
                    } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {
                        iStart = oPaging.iTotalPages - iListLength + 1;
                        iEnd = oPaging.iTotalPages;
                    } else {
                        iStart = oPaging.iPage - iHalf + 1;
                        iEnd = iStart + iListLength - 1;
                    }

                    for ( i=0,iLen=an.length ; i<iLen ; i++ ) {
                        // Remove the middle elements
                        $('li:gt(0)',an[i]).filter(':not(:last)').remove();

                        // Add the new list items and their event handlers
                        for ( j=iStart ; j<=iEnd ; j++ ) {
                            sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';
                            $('<li '+sClass+'><a href="#">'+j+'</a></li>')
                                .insertBefore( $('li:last',an[i])[0] )
                                .bind('click',function (e) {
                                    e.preventDefault();
                                    oSettings._iDisplayStart = (parseInt($('a',this).text(),10)-1) * oPaging.iLength;
                                    fnDraw( oSettings );
                                } );
                        }

                        // Add / remove disabled classes from the static elements
                        if ( oPaging.iPage === 0 ) {
                            $('li:first',an[i]).addClass('disabled');
                        } else {
                            $('li:first',an[i]).removeClass('disabled');
                        }

                        if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
                            $('li:last',an[i]).addClass('disabled');
                        } else {
                            $('li:last',an[i]).removeClass('disabled');
                        }
                    }
                }
            }
        });

        /* Show/hide table column */
        function dtShowHideCol( iCol ) {
            var oTable = $('#example-2').dataTable();
            var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
            oTable.fnSetColumnVis( iCol,bVis ? false : true );
        };

        /* Table #example */
        $(document).ready(function() {
            $('.datatable').dataTable( {
                "sDom": "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>","sPaginationType": "bootstrap","oLanguage": {
                    "sLengthMenu": "_MENU_ records per page"
                },"aoColumnDefs": [
                    { 
                        "bSortable": false,"aTargets": [ -1 ] // <-- gets last column and turns off sorting
                    } 
                ]
            });
            $('.datatable-controls').on('click','li input',function(){
                dtShowHideCol( $(this).val() );
            })
        });

解决方法

aaSorting选项设置为空数组。它将禁用初始排序,同时仍然允许在您单击列时进行手动排序。
"aaSorting": []

The aaSorting array should contain an array for each column to be
sorted initially containing the column’s index and a direction string (‘asc’ or ‘desc’).

猜你在找的jQuery相关文章