我正在尝试使用one
函数选择包含td
jQuery .filter()
的表格中包含特定文本的行。我的功能看起来像这样......
function getBudgetRowByType(serviceTypeNum) {
alert(serviceTypeNum);
if (parseInt(serviceTypeNum) == 1) {
var row = $('.bgTablePopUp > tbody > tr').filter(function () {
$(this).children("td:contains('Instruction')");
});
return row;
} else if (parseInt(serviceTypeNum) == 2) {
var row = $('.bgTablePopUp > tbody > tr').filter(function () {
$(this).children("td:contains('Research')");
});
return row;
} else if (parseInt(serviceTypeNum) == 3) {
var row = $('.bgTablePopUp > tbody > tr').filter(function () {
$(this).children("td:contains('Administration')");
});
return row;
} else {
// Else nada
return null;
}
}
html看起来像这样...
<table>
<tr>
<td>Instruction</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>Research</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>Administration</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
</table>
我一直得到一个未定义的结果,我不确定为什么......
答案 0 :(得分:3)
像这样使用.filter
- (其他条件相同)
if (parseInt(serviceTypeNum) == 1) {
var row = $('.bgTablePopUp > tbody > tr > td').filter(function () {
return $.trim($(this).text()) === "Instruction";
}).closest('tr');
return row;
}
答案 1 :(得分:1)
这是一种POJS方式(IE9 +),否则需要Array.prototype.filter
支持(有垫片),document.querySelectorsAll
(但你可以使用其他DOM方法来获取{{} 1}}元素,或者它们是可用的垫片,你可以使用jquery来选择它们)和Node.textContent
(再次使用垫片,或者只是遍历DOM并收集文本节点)。我认为很高兴看到替代方案,并且您已经为jQuery.filter
问题选择了答案。您可能还会发现switch
语句更适合您正在做的事情。
的Javascript
tr
上