2014-02-16 1 views
0

Как я могу вставить много строк в таблицу сортировки кикстарта? Я устанавливаю код <tr>...</tr> с помощью метода jQuery appendTo в tbody таблицы (например: $("<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>".format(a, b, c)).appendTo("#items-tbody");), тогда я не могу сортировать ни один столбец. У меня есть ошибки, такие как:Вставка строк в таблицу сортировки kickstart

TypeError: i is undefined - kickstart.js (line 288) в FireFox, или

Uncaught TypeError: Cannot call method 'match' of undefined в хроме.

Я знаю, что kickstart добавляет собственные дополнительные атрибуты, но как добавить их после загрузки страницы?

+0

Может вы предоставляете скрипку? Без этого вам трудно помочь. – dfsq

+0

@dfsq, это не просто создать скрипку с кодом 3side (этот код из файла kickstarter js также добавляет необходимые атрибуты: '' '$ ('table.sortable'). Each (function() { $ (this). find ('thead th'). each (function (index) { $ (this) .attr ('rel', index); }); $ (this) .find ('th, td'). (function() { $ (this) .attr ('value', $ (this) .text()); }); }); '' '. Возможно, было бы удобнее делать при обновлении таблицы DOM (с MutationObserver или smtn). – Tolsi

ответ

0

Ваша точная ошибка вызвана не установкой значения значения атрибута для вставленных. Kickstart использует TinySort для сортировки, которая, по-видимому, использует значение attr.

т.е.

var tbody = $(SELECTOR_FOR_TBODY); 
tbody.append("<tr id='ROW_FOR_NEW_DATA'/>"); 
var tr = $("#ROW_FOR_NEW_DATA");` 
tr.append("<td value='MyNewValueForTD1'>MyValueForTD1</td>"); 
tr.append("<td value='MyNewValueForTD2'>MyValueForTD2</td>"); 

Для того, чтобы сохранить правильное форматирование полосатых строк (и, возможно, некоторые другие виды поведения), вы должны сделать что-то вроде этого после добавления всех новых строк:

$('table').find('tr:even').addClass('alt'); 
$('table').find('tr:first-child').addClass('first'); 
$('table').find('tr:last-child').addClass('last'); 

 Смежные вопросы

  • Нет связанных вопросов^_^