所以我有这些数据行,我需要禁用复选框,其中第3列包含' B' OR列#4包含负数。我在这里有一个工作代码jsfiddle,但我觉得它多余且效率不高。有人可以帮助更好地做到这一点吗?
$(document).ready(function() {
$('#row1 tr > td:nth-child(3)').each(function() {
if ($(this).text() == 'B')
{
$(this).closest('tr').find('input:checkbox').attr("disabled",true);
}
});
$('#row1 tr > td:nth-child(4)').each(function() {
if (parseInt($(this).text()) < 0)
{
$(this).closest('tr').find('input:checkbox').attr("disabled",true);
}
});
});
答案 0 :(得分:0)
您可以在#row1 tr。
的单个选择器下组合2个语句小提琴:http://jsfiddle.net/fRUUd/2728/
<table id="row1">
<tbody>
<tr id="tr1">
<td class="cb"><input type="checkbox" id="cb1">
</td>
<td>X</td>
<td>A</td>
<td>5</td>
</tr>
<tr id="tr2">
<td class="cb"><input type="checkbox" id="cb2">
</td>
<td>Y</td>
<td>B</td>
<td>2</td>
</tr>
<tr id="tr3">
<td class="cb"><input type="checkbox" id="cb3">
</td>
<td>Z</td>
<td> C </td>
<td>-3</td>
</tr>
</tbody>
</table>
<br>
<p id="out"></p>
$(document).ready(function () {
$('#out').text('');
$('#row1 tr').each(function (i, o) {
var node;
if (i == 1) {
node = $(this).find("td:nth-child(3)");
if($.trim($(node).text()) == "B")
$(this).find('input:checkbox').attr("disabled", true);
}
else if (i == 2) {
node = $(this).find("td:nth-child(4)");
if (parseInt($(node).text()) < 0) {
$(this).find('input:checkbox').attr("disabled", true);
}
}
});
//get row values
$('#out').append($('#row1 tr :checkbox:disabled').length);
});