2011-07-08 8 views
6

Estoy usando el jQuery tablesorter plugin. Yo sé cómo desactivar la ordenación en una columna utilizando el plugin de jQuery Metadatos:jQuery tablesorter: ¿Cómo deshabilitar la clasificación en una columna utilizando una clase en lugar de "JSON en línea"?

<th class="{sorter: false}">Don't sort me</th> 

Pero preferiría hacer esto mediante el establecimiento de una clase, por lo que no tiene que usar un plugin adicional. También creo que recordaría el nombre de clase más fácil que recordar esta sintaxis JSON. ¿Cómo puedo hacer la misma cosa misma, con esta sintaxis:

<th class="not-sortable">Don't sort me</th> 

Respuesta

11

Creo que la única manera de conseguir que esto funcione es modificar el código fuente del plugin.

En jquery.tablesorter.js, Línea 483:

function checkHeaderMetadata(cell) { 
    if (($.metadata) && ($(cell).metadata().sorter === false)) { 
     return true; 
    }; 
    return false; 
} 

Cambiar el código a:

function checkHeaderMetadata(cell) { 
    if ((($.metadata) && ($(cell).metadata().sorter === false)) || $(cell).hasClass("not-sortable")) { 
     return true; 
    }; 
    return false; 
} 

Ahora la función checkHeaderMetadata también está volviendo cierto, si la célula tiene una clase llamada not-sortable.

+0

¡gracias increíbles! – Andrew

17

No debería tener que modificar el origen del complemento. Asumiendo que su clase th por no ordenar que se llama nosort:

function setupTablesorter() { 
    $('table.tablesorter').each(function (i, e) { 
     var myHeaders = {} 
     $(this).find('th.nosort').each(function (i, e) { 
      myHeaders[$(this).index()] = { sorter: false }; 
     }); 

     $(this).tablesorter({ widgets: ['zebra'], headers: myHeaders }); 
    });  
} 
15

Estoy de acuerdo, en línea JSON era raro. Si está utilizando v2.3 tablesorter o temprano, en realidad se puede utilizar papeles de datos para hacer la misma cosa - y no tener que utilizar el plug-in de metadatos:

<th data-sorter="false">...</th> 

Mucho más limpio. Sin embargo, tenga en cuenta que requiere jQuery.

Para obtener más información & una demo: http://mottie.github.io/tablesorter/docs/example-parsers-jquery-data.html

Todo lo mejor!

  • Ben
2

partir de la versión 2.0.x se puede decidir en la inicialización, que la columna de no tipo.

Agregue una propiedad llamada headers y foreach columna deseada la propiedad sorter con el valor false. Las columnas de conteo comienzan en 0.

jQuery('#element').tablesorter({ 
    headers: { 
     // first column 
     0: { 
      sorter: false 
     }, 
     // third column 
     2: { 
      sorter: false 
     } 
    } 
}); 

Ejemplo tomado del docs.

Cuestiones relacionadas