2010-07-21 52 views
3

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

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存在,我看到了警报,我看到在背景中高亮显示文本(所以我的代码来突出显示文本作品)。当我点击关闭警报时,表格完成排序......并且文本不再被突出显示。

任何想法可能发生什么?

回答

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(); 
    }); 
}); 
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(); 
    } 
    } 
}); 

这就是现在的工作。不幸的是,我不得不放弃所有文本的选择/突出显示。出于某种原因,在代码中它有“选择()”,甚至没有聚焦的工作:

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

如果任何人有如何聚焦并突出显示所有文本的任何想法,那么这将是非常感谢!