как вызвать элемент span при сортировке таблицы - PullRequest
0 голосов
/ 09 мая 2019

Для сортировки таблицы по размеру файла я использую этот код:

// table sort
    $(document).on('click','th',function() {    
        var table = $(this).parents('table').eq(0)
        var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index()))
        this.asc = !this.asc
        if (!this.asc){rows = rows.reverse()}
        for (var i = 0; i < rows.length; i++){table.append(rows[i])}
    })
    function comparer(index) {
        return function(a, b) {
            var valA = getCellValue(a, index), valB = getCellValue(b, index)
            return $.isNumeric(valA) && $.isNumeric(valB) ? valA - valB : valA.toString().localeCompare(valB)
        }
    }
    function getCellValue(row, index){ return $(row).children('td').eq(index).text() }

Строка с td выглядит следующим образом:

<!-- SIZE-->    
<td class="td-size table-data">
    <!-- raw size for sorting only-->
   <span class="sort-only hide">
          <?php echo filesize($dir . '/' . $file); ?>
      </span>
   <?php                           
     echo sizeFormat(recursive_directory_size($dir . '/' . $file);
   ?>
</td>

Значение между элементом span является необработанным значением (которое я хочу использовать для сортировки).

Как я могу вызвать элемент span внутри tr в javascript? Потому что теперь он сортирует только значение внутри td. И это должно быть только span внутри td

1 Ответ

2 голосов
/ 09 мая 2019

Возможно, если вы настроите getCellValue для проверки span, это сработает:

function getCellValue(row, index) { 
    let $td = $(row).children('td').eq(index),
        $span = $td.find('span.sort-only');

    if ($span.length) { // If span.sort-only was found
        return $span.text();
    } 
    else { // If not
        return $td.text();
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...