首页 > 解决方案 > 如何排除包含具有特定类的 TD 的 TR

问题描述

我有一个函数,我在其中获取表的第一个 TR,然后获取该 TR 的所有 TD。现在我需要修改这个函数:当我取第一个 TR 时,我需要检查我的 TR 的所有 TD 是否都有类“HD1”,我需要取表的第二个 TR。我把我的功能放在下面。提前致谢。

 function getColumnsIdx(id) {
   var header = $("table#" + id + " thead tr:eq(1)");
   var header_fields = $("td", header);
   var header_idx = new Object();
   header_fields.each(function(idx, val) {
     var $$ = $(val);
     var key = $$.text();
     header_idx[key] = idx;
   });
 return header_idx;
}

标签: javascriptjquery

解决方案


您可以在没有该类的情况下查找第一个td,然后获取其父级:

var header = $("table#" + id + " thead tr td:not(.HD1):eq(0)").parent();

但是,这可能会导致获得第三/第四/等行。如果您必须始终返回第二行,即使这些单元格也都具有 HD1 类:

var header = $("table#" + id + " thead tr:eq(0)");
var header_fields = $("td", header);

if (header_fields.length && header_fields.length == header_fields.filter(".HD1").length) {
  header = header.next();
  header_fields = $("td", header);
}

注意::eq()使用从零开始的索引,因此用于eq(0)选择第一个元素。


推荐阅读