Создание массива объектных литералов в цикле

#javascript #jquery #tablesorter

#javascript #jquery #сортировщик таблиц

Вопрос:

Я использую плагин jQuery для сортировки столбцов — tablesorter.

Это позволяет отключить заголовки с помощью опций. На данный момент я отключаю заголовки 2 и 3, передавая параметры при инициализации плагина:

 $("#mytable").tablesorter({
  headers: {
    1: {  
      sorter: false 
    },
    2: { 
      sorter: false 
    }
  } 
});
  

Я хотел бы сделать это динамически, проверив, существует ли класс «header»; если нет, я бы отключил эту функциональность.

Вот мой jsfiddle

Есть идеи о том, как я мог бы сделать это динамически?

Комментарии:

1. Ознакомьтесь с моей веткой tablesorter , в которой вы можете просто добавить имя класса sorter-false в заголовок, чтобы динамически включать или отключать сортировку.

Ответ №1:

Вы можете получить все theade th элементы без класса header , а затем создать динамический объект, например

 var headers = {};
$('#mytable thead th').not('.header').each(function () {
    headers[$(this).index()] = {
        sorter: false
    };
})

console.log(headers)

$("#mytable").tablesorter({
    headers: headers
});
  

Демонстрация: скрипка

Комментарии:

1. Спасибо, работает нормально. Единственная ошибка в вашем коде заключается в том, что сортировщику должно быть присвоено значение false. Я приму ваш ответ, как только вы обновите. Спасибо за быстрый ответ!