Jquery跳过循环的最后两行



我有一个表,我想跳过循环中的最后两行。有没有办法处理jquery函数?

$("#emp tr").not(':last').each(function () { });

$(document).ready(function() {
$("#btnSave").click(
function() {
var result = DisableClick();
alert(result);
}
);
});
function DisableClick() {
var status = false;
$("#emp tr").not(':last').each(function() {
var status = $(this).find('td:nth-child(3)').text();
if (status === 'Yes') {
moduleCompleted = true;
return true;
}
});
return moduleCompleted;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="emp" style="width:100%">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Status</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>Yes</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>Yes</td>
</tr>
<tr>
<td>Last1</td>
<td>Last1</td>
<td></td>
</tr>
<tr>
<td>Last</td>
<td>Last</td>
<td></td>
</tr>
</table>
<button id="btnSave">Save Click</button>

使用.slice()按索引获取元素范围。可以使用负索引从末尾开始计数。

$(document).ready(function() {
$("#btnSave").click(
function() {
var result = DisableClick();
alert(result);
}
);
});
function DisableClick() {
var status = false;
$("#emp tr").slice(0, -2).each(function() {
var status = $(this).find('td:nth-child(3)').text();
if (status === 'Yes') {
moduleCompleted = true;
return true;
}
});
return moduleCompleted;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="emp" style="width:100%">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Status</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>Yes</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>Yes</td>
</tr>
<tr>
<td>Last1</td>
<td>Last1</td>
<td></td>
</tr>
<tr>
<td>Last</td>
<td>Last</td>
<td></td>
</tr>
</table>
<button id="btnSave">Save Click</button>

但是,与其像这样硬编码索引,我建议您为要处理的行指定一个类,并在选择器中使用它。或者将表拆分为单独的theadtbodytfoot部分,然后使用#emp tbody tr选择行。

最新更新