我正在使用以下代码来筛选不包含特定文本的行。
var x = "cotton";
$('#divQualCodeFuncPMType > table tbody tr:gt(0) td:eq(2) span:not(:contains(' + x + '))').closest("tr");
它不会导致任何行,但是如果我使用以下代码来过滤具有特定文本的行,那么它会很好地工作,因此not的实现似乎有问题。
$('#divQualCodeFuncPMType > table tbody tr:gt(0) td:eq(2) span:contains(' + x + ')').closest("tr");
有人可以纠正这里的问题吗?任何帮助将不胜感激。
更新:HTML标记
<table class="SetDWPParameterTabStyle">
<tbody>
<tr class="GridHeaderSystemParamter">
<td style="display: none">
Map Id
</td>
<td style="display: none; width: 30px;">
Type Id
</td>
<td style="width: 300px">
Material Type
</td>
</tr>
<tr>
<td style="display: none">
<span id="lblMapId">10</span>
</td>
<td style="display: none">
<span id="Label3">60</span>
</td>
<td>
<span id="Label1">100% cotton</span>
</td>
</tr>
<tr>
<td style="display: none">
<span id="lblMapId">20</span>
</td>
<td style="display: none">
<span id="Label3">70</span>
</td>
<td>
<span id="Label1">100% cotton</span>
</td>
</tr>
</tbody>
<table>
问题是td:eq(2)
,作为只匹配第三td
的所有匹配的行(不只是第三个每行中)!
例如这里显示的问题http://jsfiddle.net/TrueBlueAussie/a9mck46m/2/
使用nth-child(3)
来代替:
$('#divQualCodeFuncPMType > table tbody tr:gt(0) td:nth-child(3) span:contains("' + x + '")').closest("tr");
JSFiddle: http : //jsfiddle.net/TrueBlueAussie/a9mck46m/1/
td:nth-child(3)
将匹配每个td
那就是第三个孩子。注意nth-child
从1开始(与CSS等效项兼容)。
一旦开始获取复杂的查询,使用filter
带有返回功能true
或false
包含/排除项目的函数切换到会更容易。
例如
var $el = $('#divQualCodeFuncPMType > table tbody tr:gt(0)').filter(function(){
return $('td:nth-child(3) span:contains("' + x + '")', this);
});
JSFiddle: http : //jsfiddle.net/TrueBlueAussie/a9mck46m/4/
您在下面的另一个问题询问有关合并搜索的问题:
true
如果找到两个项目,则以下内容仅返回一个值:
var x = "cotton";
var y = "Fish";
var $el = $('#divQualCodeFuncPMType > table tbody tr:gt(0)').filter(function(){
return $(this).find('td:nth-child(3) span:contains("' + x + '")').length && $(this).find('td:nth-child(5) span:contains("' + y + '")').length;
});
JSFiddle: http : //jsfiddle.net/TrueBlueAussie/a9mck46m/5/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句