我有一个使用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是否存在,我会看到警报,并且我看到背景中突出显示的文本(所以我的代码突出显示文本有效)。当我单击以关闭警报时,表格将完成排序...并且文本不再突出显示。
任何想法可能会发生什么?
答案 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
event)(source)注意:这些仅适用于{{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插件不适用于我。也许是因为我过滤行的方式。