jQuery tablesorter - потеря функциональности после вызова Ajax

Простой ответ: потому что next -функция имеет различное значение (цели).

next -функция подобна диспетчеру, который говорит поезду, куда идти.

blockquote>

Вызов функции next с тем же маршрутом to имеет значение только тогда, когда состояние приложения меняется между этими вызовами (куки были удалены, значения localStorage изменены, сеанс завершен и т. д.), иначе вы получите предупреждение / ошибка бесконечного цикла.

Есть ли вариант использования для вызова next () с тем же аргументом, что и у текущего значения to?

blockquote>

Да, есть несколько вариантов использования. Один из них можно найти в этом SO вопросе и ответе. - динамически изменять компонент, который отвечает за визуализацию представления.

11
задан sth 28 July 2009 в 02:40
поделиться

5 ответов

Вы попытались звонить

$("#myTable").tablesorter();

после кода, где Вы обрабатываете щелчок по вкладке и повторно заполняете таблицу??? В противном случае просто дайте ему попытку.

4
ответ дан 3 December 2019 в 03:05
поделиться

Оказывается, что я должен был сделать некоторые модификации к связанному с Ajax коду для вспоминания $("#myTable").tablesorter(..) после получения по запросу любых данных...

0
ответ дан 3 December 2019 в 03:05
поделиться

Может случиться так, что, поскольку Ваша вторая таблица составлена с 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> 
3
ответ дан 3 December 2019 в 03:05
поделиться

У меня была та же проблема, за исключением того, что я загружал таблицу, в которой была строка для каждой «категории», а затем вставлял данные для каждой категории в таблицу с помощью асинхронных вызовов. Вызов $ ("# myTable"). Tablesorter (..) после того, как каждая запись была возвращена, вызвала бомбежку моего браузера, когда было загружено более чем тривиальное количество записей.

Мое решение состояло в том, чтобы объявить две переменные, totalRecords и fetchedRecords . В $ (document) .ready () я установил totalRecords на $ ("# recordRows"). Length; и каждый раз заполняю запись в таблице увеличивается значение переменной fetchedRecords , и если fetchedRecords> = totalRecords , я вызываю $ ("

0
ответ дан 3 December 2019 в 03:05
поделиться

После того, как вы добавили свои данные, сделайте следующее:

$("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

21
ответ дан 3 December 2019 в 03:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: