Плагин jQuery tablesorter - выполнить действие ПОСЛЕ сортировки таблицы - PullRequest
3 голосов
/ 21 июля 2010

У меня есть таблица, которая успешно сортируется с помощью плагина tableorter. Однако я хочу выделить текст в определенном текстовом поле в определенной строке. У него есть уникальный идентификатор, но когда я помещаю свой код после кода сортировки, он не работает. Вот мой код:

jQuery(document).ready(function() { 
  jQuery("#filetable").tablesorter({
    sortList: [[3,1]],
    widgets: ['zebra'],
    testExtraction: "complex"
  });
  //my new code which doesn't work as expected
  if(jQuery("#new_foldername").length > 0){ 
    jQuery("#new_foldername").focus(function() { jQuery(this).select(); } ); 
  }
}); 

Если я вставлю предупреждение сразу после проверки, чтобы увидеть, существует ли #new_foldername, я увижу предупреждение и текст, выделенный на заднем плане (поэтому мой код для выделения текста работает). Когда я нажимаю, чтобы закрыть предупреждение, таблица завершает сортировку ... и текст больше не подсвечивается.

Есть идеи, что может произойти?

Ответы [ 4 ]

5 голосов
/ 21 июля 2010

похоже сортировка происходит асинхронно. документация предоставляет хук под названием sortEnd, где вы, вероятно, захотите запустить свой код подсветки. см пример http://tablesorter.com/docs/example-triggers.html

$(document).ready(function() { 
    // call the tablesorter plugin, the magic happens in the markup 
    $("table").tablesorter(); 

    //assign the sortStart event 
    $("table").bind("sortStart",function() { 
        $("#overlay").show(); 
        }).bind("sortEnd",function() { 
        $("#overlay").hide(); 
    }); 
}); 
0 голосов
/ 18 декабря 2018

Может быть, что-то изменилось.Ответы не работают для меня, но это работает:

$("#filetable").tablesorter().bind("sortEnd", function (e, t) {
    customHilite();
});

Плагин Zebra не работает для меня.возможно из-за того, как я фильтровал строки.

0 голосов
/ 18 ноября 2015

Вы можете использовать функцию обратного вызова initialized (или привязку к событию tablesorter-initialized ) ( источник ) Примечание: они работают только на Mottie's fork tableorter , а не оригинал (v2.0.5).

jQuery(document).ready(function() {
    jQuery("#filetable").tablesorter({
        sortList: [[3, 1]],
        widgets: ['zebra'],
        testExtraction: "complex",
        initialized: function() {
            if (jQuery("#new_foldername").length > 0) {
                jQuery("#new_foldername").focus(function() {
                    jQuery(this).select();
                });
            }
        }
    });
});
0 голосов
/ 22 июля 2010

Спасибо, Роберт,

К сожалению, sortEnd запускается только при нажатии на заголовок столбца для сортировки.Он не работает при первоначальной сортировке ...

Вместо этого я создал новый виджет примерно так:

jQuery.tablesorter.addWidget({ 
  id: "highlightNewFolder", 
  // format is called when the on init and when a sorting has finished 
  format: function(table) { 
    if(jQuery("#new_foldername").length > 0){  
      jQuery("#new_foldername").focus();
    }
  } 
});

Теперь это работает.К сожалению, мне пришлось отказаться от выделения / выделения всего текста.По какой-то причине, когда в коде есть «select ()», даже фокусировка не сработала:

jQuery("#new_foldername").focus(function() { jQuery(this).select(); } ); 

Если у кого-то есть идеи о том, как сфокусировать И выделить весь текст, это было бы очень полезно!

...