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

如果任何人有如何聚焦並突出顯示所有文本的任何想法,那麼這將是非常感謝!

相關問題