如何使用 jQuery 选择器在 table 中找到文本框具有值的最后一行?
How to use jQuery selector to find last row in table that textboxes have values?
假设我关注HTML
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
我需要找出 table 中的最后一行这些文本框是否有价值。除了循环遍历它们,有没有我可以利用的快速 jQuery 选择器?
没有用于获取非空输入的内置选择器。但是,您可以使用 filter()
查找最后一个具有值的输入,然后从该元素中获取 closest()
tr
:
$('button').click(function() {
$('.foo').removeClass('foo'); // only for this demo, you may not need this
var $tr = $('input').filter(function() {
return this.value.trim();
}).last().closest('tr');
$tr.addClass('foo');
});
.foo { background-color: #C00; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
</table>
<button>Highlight row</button>
如果你想要最后一行最后输入的值,你可以使用$("table tr:last input:last")
。
$(document).ready(function() {
console.log($("table tr:last input:last").val())
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" value="last" />
</td>
</tr>
</table>
假设我关注HTML
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
我需要找出 table 中的最后一行这些文本框是否有价值。除了循环遍历它们,有没有我可以利用的快速 jQuery 选择器?
没有用于获取非空输入的内置选择器。但是,您可以使用 filter()
查找最后一个具有值的输入,然后从该元素中获取 closest()
tr
:
$('button').click(function() {
$('.foo').removeClass('foo'); // only for this demo, you may not need this
var $tr = $('input').filter(function() {
return this.value.trim();
}).last().closest('tr');
$tr.addClass('foo');
});
.foo { background-color: #C00; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
</table>
<button>Highlight row</button>
如果你想要最后一行最后输入的值,你可以使用$("table tr:last input:last")
。
$(document).ready(function() {
console.log($("table tr:last input:last").val())
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" />
</td>
</tr>
<tr>
<td>
<input type="text" class="date-input" />
<input type="text" class="date-input" />
<input type="text" class="number-input" />
<input type="text" class="number-input" value="last" />
</td>
</tr>
</table>