2017-10-10 135 views
-1

我有一个2列“id”(唯一值)和“名称”的表。使用jQuery我想返回ID与ID数组(例如SR1,B1,B2)匹配的行数(.length),并且这些行的“name”字段中的值为空。jquery查找具有2列中特定值的表行数

到目前为止,我有:

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会返回不正确的结果,如果该表按行的顺序将更改,则按不同的字段排序。

请任何人都可以提出一个强大的功能,实现我所需要的?

+1

请点击'<>'并张贴[MCVE] – mplungjan

+0

不知道为什么我要发布一个例子 - 这是关于选择和使用jQuery和上下文过滤元件中有很好的描述一个简单的问题,我首段。 –

+0

@TomHeaps实际html的spinet会有帮助。 – nurdyguy

回答

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; 
+0

非常感谢您的及时响应 - 此代码完全符合我的需求,并且以比我能写得更好的方式完成! –

相关问题