2011-01-23 6 views
0

Мой вопрос в основном the same as this one (который не получил должного ответа).Применение функции jQuery для динамически добавленного элемента

Как я могу использовать функцию jQuery для элемента, который я добавляю динамически?

В частности, я хочу использовать jquery tablesorter plugin на таблице, которую я загружаю на страницу динамически, после того, как пользователь что-то делает.

Вот мой код:

results_html += "<table id='results' class='tablesorter><thead>"; 
[My table contents go here, ommitted for this question] 
results_html += "</tbody></table>"; 
$('#book_results').html(results_html); 
$("#results").tablesorter(); 

Там нет JS ошибки на странице, но функция TableSorter не применяется. Что я могу сделать?

Спасибо!

ответ

0

Глядя на этот код, я могу только думать о двух причинах, которые не работают:

  1. Если results не уникальный идентификатор на странице.
  2. Если опечатка в открытии линии на самом деле в вашем коде (вам не хватает закрытия ' после класса «TableSorter»:

    results_html += "<table id='results' class='tablesorter><thead>"; 
                    // ^-- here 
    

Фундаментально, это работает: http://jsbin.com/ikebu4/2 Это Безразлично» t выглядит так, потому что я не включил ни один из CSS-сортировщика таблиц, но он функциональный, если вы нажмете заголовки столбцов. В основном существует уже существующая таблица, а затем кнопка, чтобы добавить ее динамически. .

+0

Мой код на самом деле немного отличается от примера (дольше). Но я не вижу никаких ошибок в Firebug, даже при строгих предупреждениях javascript. Hmm ... – AP257

+0

@ AP257: Описана ли типография в реальном коде? Если это так, Firefox может не генерировать структуру DOM, которую вы ожидаете (и что TableSorter нуждается). –

+0

извините - нет, это не настоящий код. В середине таблицы имеется довольно много дополнительного кода, но я не вижу никаких очевидных ошибок, и Firebug не показывает мне никаких ошибок (хотя это может быть проблема Firebug, конечно). – AP257

2

Tablesorter имеет три gger, которую вы можете вызвать, чтобы добавить tablesorter в динамически добавленный элемент. См. Здесь Ajax example. Нечто подобное должно работать для вас:

$("#results").tablesorter(); 
$("#results").trigger("update"); 

Иногда вам нужно позвонить $("#results").trigger("appendCache");. Я еще не понял почему.

+0

Должен ли он в этом нуждаться? Пример, который я связал в своем ответе, не имеет его и работает нормально. –

+1

@ T.J. Странно, я несколько раз использовал tablesorter и не мог делать то, что вы делаете. Возможно, есть обновление, которое исправляет это. @ AP257 У вас есть последняя версия? – alexn

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