X-Git-Url: http://git.cyclocoop.org/%22.%24image2.%22?a=blobdiff_plain;f=resources%2Fsrc%2Fjquery.tablesorter%2Fjquery.tablesorter.js;h=c1b83fde610cd05894ebb2e5042c7c47078ce51c;hb=b8e0ca16aa743581f5fac5cef8bed5ac2bf6e7cb;hp=74873c4b7a4193df59e5da924c5febbd49ef266a;hpb=3e0c165146ab7a8b74bc0abd169a09c418d850e3;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/src/jquery.tablesorter/jquery.tablesorter.js b/resources/src/jquery.tablesorter/jquery.tablesorter.js index 74873c4b7a..c1b83fde61 100644 --- a/resources/src/jquery.tablesorter/jquery.tablesorter.js +++ b/resources/src/jquery.tablesorter/jquery.tablesorter.js @@ -59,33 +59,40 @@ return false; } + /** + * @param {HTMLElement} node + * @return {string} + */ function getElementSortKey( node ) { - var $node = $( node ), - // Use data-sort-value attribute. - // Use data() instead of attr() so that live value changes - // are processed as well (T40152). - data = $node.data( 'sortValue' ); + // Get data-sort-value attribute. Uses jQuery to allow live value + // changes from other code paths via data(), which reside only in jQuery. + // Must use $().data() instead of $.data(), as the latter *only* + // accesses the live values, without reading HTML5 attribs first (T40152). + var data = $( node ).data( 'sortValue' ); if ( data !== null && data !== undefined ) { // Cast any numbers or other stuff to a string, methods // like charAt, toLowerCase and split are expected. return String( data ); } - if ( !node ) { - return $node.text(); - } if ( node.tagName.toLowerCase() === 'img' ) { - return $node.attr( 'alt' ) || ''; // handle undefined alt + return node.alt; } - return $.makeArray( node.childNodes ).map( function ( elem ) { + // Iterate the NodeList (not an array). + // Also uses null-return as filter in the same pass. + // eslint-disable-next-line no-jquery/no-map-util + return $.map( node.childNodes, function ( elem ) { if ( elem.nodeType === Node.ELEMENT_NODE ) { if ( $( elem ).hasClass( 'reference' ) ) { return null; - } else { - return getElementSortKey( elem ); } + return getElementSortKey( elem ); + } + if ( elem.nodeType === Node.TEXT_NODE ) { + return elem.textContent; } - return $.text( elem ); + // Ignore other node types, such as HTML comments. + return null; } ).join( '' ); }