table.config.parsers = buildParserCache( table, $headers );
}
- // as each header can span over multiple columns (using colspan=N),
- // we have to bidirectionally map headers to their columns and columns to their headers
- headerToColumns = [];
- columnToHeader = [];
- colspanOffset = 0;
- $headers.each( function ( headerIndex ) {
- var columns = [];
- for ( var i = 0; i < this.colSpan; i++ ) {
- columnToHeader[ colspanOffset + i ] = headerIndex;
- columns.push( colspanOffset + i );
- }
-
- headerToColumns[ headerIndex ] = columns;
- colspanOffset += this.colSpan;
- } );
-
// Apply event handling to headers
// this is too big, perhaps break it out?
- $headers.filter( ':not(.unsortable)' ).click( function ( e ) {
- if ( e.target.nodeName.toLowerCase() === 'a' ) {
- // The user clicked on a link inside a table header
- // Do nothing and let the default link click action continue
+ $headers.filter( ':not(.unsortable)' ).on( 'keypress click', function ( e ) {
+ if ( e.type === 'click' && e.target.nodeName.toLowerCase() === 'a' ) {
+ // The user clicked on a link inside a table header.
+ // Do nothing and let the default link click action continue.
+ return true;
+ }
+
+ if ( e.type === 'keypress' && e.which !== 13 ) {
+ // Only handle keypresses on the "Enter" key.
return true;
}