Использование jQuery Tablesorter с Prototype

У меня возникают проблемы при добавлении функции сортировщика таблиц jQuery в старое приложение, использующее Prototype.js. Я бы использовал TableKit, но таблица, которую я хочу отсортировать, создается + динамически очищается в обратном вызове AJAX, что TableKit не обрабатывает. Работает нормально, за исключением тех случаев, когда я пытаюсь инициировать обновление кеша сортировщика таблиц:

// Clear the list view
$$('#scrollingList tr.dataRow').each(function(e) { 
    e.remove();
});

addMapMarkers(); // This function rebuild the sortable table

// triggering update to clear tablesorter cache
jQuery('#soundTable').trigger('update');

Когда обратный вызов «обновление» выдает ошибку table.tBodies[0] is undefined.

Я придумал упрощенный тестовый пример, и он работал нормально, если я не включу библиотеку Prototype.js, так что я почти уверен, что это вопрос совместимости между jQuery и Prototype.Я действительно не хочу переписывать все это на jQuery только для того, чтобы использовать Tablesorter, поэтому любая помощь будет принята с благодарностью. Спасибо.

Вот код простого примера...

<script type="text/javascript" src="../jquery-latest.js"></script>
<script type="text/javascript" src="../jquery.tablesorter.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js" type="text/javascript"></script>
<script type="text/javascript">

    jQuery(document).ready(function() {
    jQuery("table").tablesorter(); 
    jQuery("#append").click(function() {

    // add some html
    var html = "<tr id='deltest' class='data'><td>Peter</td><td>Parker</td><td>28</td><td>$9.99</td><td>20%</td><td>Jul 6, 2006 8:14 AM</td></tr>";
    html += "<tr class='data'><td>John</td><td>Hood</td><td>33</td><td>$19.99</td><td>25%</td><td>Dec 10, 2002 5:14 AM</td></tr>";
    html += "<tr class='data'><td>Clark</td><td>Kent</td><td>18</td><td>$15.89</td><td>44%</td><td>Jan 12, 2003 11:14 AM</td></tr>";        
    html += "<tr class='data'><td>Bruce</td><td>Almighty</td><td>45</td><td>$153.19</td><td>44%</td><td>Jan 18, 2001 9:12 AM</td></tr>";

    var sorting = [[2,1],[0,0]];

   // append new html to table body 
    jQuery("table tbody").append(html);

    jQuery('tr').click(function(){  
    jQuery(this).remove();
    jQuery('table').trigger('update');
    jQuery("table").trigger("sorton",[sorting]) 

   }) 
  return false;
    });
});
</script>

У меня есть таблица, которая строится динамически, я прикрепил обработчик кликов к первой строке. Щелчок по первой строке после построения таблицы удаляет строку и запускает обновление. Как я уже сказал, отлично работает без прототипа.js, получает ту же ошибку, если она включена, что, я думаю, указывает на конфликт jQuery/Prototype.

5
задан user1461619 17 June 2012 в 10:30
поделиться