Greasemonkey 脚本使用 jQuery 忽略附加到表行的元素

Greasemonkey script ignores elements appended to table rows using jQuery

本文关键字:元素 脚本 jQuery Greasemonkey      更新时间:2023-09-26

我使用 jQuery 将一些<th><td>元素附加到表中的多个行中:

$(selector).filter(function () {
    //jQuery finds some cells, evaluates them and generates new cell content
    $(this).parent().append('<td>' + FormattedDate + '</td>');
});        
//Some code here generates counts
for(var i = column_count; i > header_count; i--) {
    $('.result_table tr:first').append("<th>test</th>");
}        

然后,我加载这个 Greasemonkey 脚本,它应该使整个表可排序。但是,Greasemonkey 脚本仅使在我使用 jQuery 添加单元格之前属于表一部分的列可排序。如何使其适用于所有列?

如果不更改 Greasemonkey 脚本,您将无法执行此操作。 但是,在这种情况下,这相当容易,因为目标页面只需更改一次表格并$(document).ready(名义上DOMContentLoaded)。

因此,如果您将 Greasemonkey 脚本设置为在窗口 load 运行,那么它将在表被修改后运行。

对于此特定脚本,只需将最后几行从:

var allTables = window.document.documentElement.getElementsByTagName ("TABLE");
CODEBOX.forEach (allTables, function (table){
    CODEBOX.tabsorter.processTable (table);
} );

自:

window.addEventListener ("load", function () {
    var allTables = window.document.documentElement.getElementsByTagName ("TABLE");
    CODEBOX.forEach (allTables, function (table){
        CODEBOX.tabsorter.processTable (table);
    } );
} );