Простой ответ: потому что next
-функция имеет различное значение (цели).
blockquote>
next
-функция подобна диспетчеру, который говорит поезду, куда идти.Вызов функции
next
с тем же маршрутомto
имеет значение только тогда, когда состояние приложения меняется между этими вызовами (куки были удалены, значения localStorage изменены, сеанс завершен и т. д.), иначе вы получите предупреждение / ошибка бесконечного цикла.Есть ли вариант использования для вызова next () с тем же аргументом, что и у текущего значения to?
blockquote>Да, есть несколько вариантов использования. Один из них можно найти в этом SO вопросе и ответе. - динамически изменять компонент, который отвечает за визуализацию представления.
Вы попытались звонить
$("#myTable").tablesorter();
после кода, где Вы обрабатываете щелчок по вкладке и повторно заполняете таблицу??? В противном случае просто дайте ему попытку.
Оказывается, что я должен был сделать некоторые модификации к связанному с Ajax коду для вспоминания $("#myTable").tablesorter(..)
после получения по запросу любых данных...
Может случиться так, что, поскольку Ваша вторая таблица составлена с ajax, что необходимо снова переплести события. Можно хотеть использовать плагин LiveQuery
http://docs.jquery.com/Plugins/livequery
который мог бы "автоволшебно" помочь с Вашей проблемой.
править: извините, просто перечитайте свое сообщение и замеченный, что Вы уже попробовали это.
Обновление. Я подстроил быструю тестовую обвязку, которая, надо надеяться, поможет. Существует 3 ЛИТИЯ наверху, у каждого есть различный способ обновить содержание таблицы. Последний обновляет содержание и сохраняет упорядочивание
<script src="jquery-1.3.js" type="text/javascript" ></script>
<script src="jquery.livequery.js" type="text/javascript" ></script>
<script src="jquery.tablesorter.min.js" type="text/javascript" ></script>
<script>
var newTableContents = "<thead><tr><th>Last Name</th><th>First Name</th>
<th>Email</th><th>Due</th><th>Web Site</th></tr></thead>
<tbody><tr><td>Smith</td><td>John</td><td>jsmith@gmail.com</td><td>$50.00</td>
<td>http://www.jsmith.com</td></tr><tr><td>Bach</td><td>Frank</td><td>fbach@yahoo.com</td>
<td>$50.00</td><td>http://www.frank.com</td></tr></tbody>";
$(document).ready(function()
{
$("#addData").click(function(event){
$("#sortableTable").html(newTableContents);
});
$("#addLivequery").livequery("click", function(event){
$("#sortableTable").html(newTableContents);
});
$("#addLiveTable").livequery("click", function(event){
$("#sortableTable").html(newTableContents);
$("#sortableTable").tablesorter( { } );
});
$("#sortableTable").tablesorter( { } );
});
</script>
<ul>
<li id="addData" style="background-color:#ffcc99;display:inline;">Update Table</li>
<li id="addLivequery" style="background-color:#99ccff;display:inline;">Update Table with livequery</li>
<li id="addLiveTable" style="background-color:#99cc99;display:inline;">Update Table with livequery & tablesorter</li>
</ul>
<hr />
<table id="sortableTable">
<thead>
<tr>
<th>Last Name</th>
<th>First Name</th>
<th>Email</th>
<th>Due</th>
<th>Web Site</th>
</tr>
</thead>
<tbody>
<tr>
<td>Jones</td>
<td>Joe</td>
<td>jjones@gmail.com</td>
<td>$100.00</td>
<td>http://www.jjones.com</td>
</tr>
<tr>
<td>French</td>
<td>Guy</td>
<td>gf@yahoo.com</td>
<td>$50.00</td>
<td>http://www.french.com</td>
</tr>
</tbody>
</table>
У меня была та же проблема, за исключением того, что я загружал таблицу, в которой была строка для каждой «категории», а затем вставлял данные для каждой категории в таблицу с помощью асинхронных вызовов. Вызов $ ("# myTable"). Tablesorter (..)
после того, как каждая запись была возвращена, вызвала бомбежку моего браузера, когда было загружено более чем тривиальное количество записей.
Мое решение состояло в том, чтобы объявить две переменные, totalRecords
и fetchedRecords
. В $ (document) .ready ()
я установил totalRecords
на $ ("# recordRows"). Length;
и каждый раз заполняю запись в таблице увеличивается значение переменной fetchedRecords
, и если fetchedRecords> = totalRecords
, я вызываю $ ("
После того, как вы добавили свои данные, сделайте следующее:
$("your-table").trigger("update");
var sorting = [[0,0]];
$("your-table").trigger("sorton",[sorting]);
Это даст знать плагину, что он обновился, и повторно сортирует его.
Полный пример, приведенный в doc:
$(document).ready(function() {
$("table").tablesorter();
$("#ajax-append").click(function() {
$.get("assets/ajax-content.html", function(html) {
// append the "ajax'd" data to the table body
$("table tbody").append(html);
// let the plugin know that we made a update
$("table").trigger("update");
// set sorting column and direction, this will sort on the first and third column
var sorting = [[2,1],[0,0]];
// sort on the first column
$("table").trigger("sorton",[sorting]);
});
return false;
});
});
Из документа tablesorter doc здесь: http://tablesorter.com/docs/example-ajax.html