jQuery tablesorter插件 - 执行AFTER表排序后的操作

时间:2010-07-21 15:46:22

标签: jquery tablesorter highlight

我有一个使用tablesorter插件成功排序的表。但是,我想突出显示特定行中特定文本字段中的文本。它有一个唯一的ID,但是当我将代码放在排序代码之后它不起作用。这是我的代码:

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 个答案:

答案 0 :(得分:5)

似乎排序是异步发生的。文档提供了一个名为“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(); 
    }); 
}); 

答案 1 :(得分:0)

感谢罗伯特,

不幸的是,只有在单击要按排序的列标题时才会运行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(); } ); 

如果有人对如何聚焦和突出显示所有文字有任何想法,那将非常感激!

答案 2 :(得分:0)

您可以使用initialized callback function (或绑定到tablesorter-initialized eventsource注意:这些仅适用于{{3} },而不是原始(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();
                });
            }
        }
    });
});

答案 3 :(得分:0)

也许有些变化。答案对我不起作用,但确实如此:

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

Zebra插件不适用于我。也许是因为我过滤行的方式。