我有一个有2列的表" id" (唯一值)和"名称"。使用jQuery我想返回ID与id数组匹配的行数(.length)(例如SR1,B1,B2)和" name"中的值。这些行的字段为空。
到目前为止,我有:
var empty = $('[tabulator-field="name"]:empty').length;
var sr1 = $('.tabulator-row:nth-of-type(29) [tabulator-field="name"]:empty').length;
var sr2 = $('.tabulator-row:nth-of-type(30) [tabulator-field="name"]:empty').length;
var b1 = $('.tabulator-row:nth-of-type(7) [tabulator-field="name"]:empty').length;
var b2 = $('.tabulator-row:nth-of-type(8) [tabulator-field="name"]:empty').length;
var c10 = $('.tabulator-row:nth-of-type(27) [tabulator-field="name"]:empty').length;
var c11 = $('.tabulator-row:nth-of-type(28) [tabulator-field="name"]:empty').length;
var emptySR = sr1 + sr2 + b1 + b2 + c10 + c11;
var emptyBeds = empty - emptySR;
然而,这似乎是一种低效的计算方法,而且,使用以下方法选择我感兴趣的行(而不是ID值):nth-of-type返回不正确的结果table按不同的字段排序,因为行的顺序会发生变化。
任何人都可以建议一个强大的功能来实现我的需求吗?
答案 0 :(得分:1)
使用选择器匹配空字段,然后使用过滤器函数测试ID是否在数组中。
var bedIds = ['SR1', 'SR2', 'B1', 'B2', 'C10', 'C11'];
var emptyBeds = $('.tabulator-row:has([tabulator-field="name"]:empty) [tabulator-field="id"]').filter(function() {
return bedIds.indexOf(this.textContent) != -1;
}).length;