jquery - 使用带有下方按钮的 $(this) 获取表中最后一行的值
问题描述
我有一个这样的表格,它会在我的页面上的弹出窗口中打开(这意味着页面上可能会出现很多情况)
<table class="tab_logic">
<thead><th>#</th><th>SKU</th><th>Quantity</th></thead>
<tbody></tbody>
</table>
直接在下面我有一个按钮,可以在 cick 上动态添加行
<div class="actions><a id="add_row">Add Row</a></div>
以前我在我的点击功能中使用它add_row
var num = $('.tab_logic tr:last td:first').text();
在我开始打开多个弹出窗口并且我的 DOM 开始在新的弹出窗口上重叠之前工作得很好。
我相信我最好的解决方案是使用 $(this) 而不是依赖 DOM——
var num = $(this).parent().parent().find('td:first').text();
到目前为止,但这似乎只带回了表中的第一行 TR。我该如何修改它,以便它始终选择 LAST row/TR
和 first column/的父级(或最接近 DOM,如图所示) TD
?
解决方案
如果按钮直接位于表格之后,则可以使用。:
$(this).parent().prev().find('tr:last td:first').text();
如果表格和 , 之间有一个元素.actions
(例如
下面的 ` 标签),则需要下面的代码。
(function($) {
$('#add_row').click(function () {
var $this = $(this),
num = $this.parent()
.siblings('.tab_logic') // .prev() could also depending on the markup.
.find('tr:last td:first').text();
console.log(num);
});
})(jQuery)
table {
border-collapse: collapse;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="tab_logic" cellpadding="5px" border="1">
<thead>
<th>#</th>
<th>SKU</th>
<th>Quantity</th>
</thead>
<tbody>
<tr>
<td>1. 1st</td>
<td>1. 2nd</td>
<td>1. 3rd</td>
</tr>
<tr>
<td>2. 1st</td>
<td>2. 2nd</td>
<td>2. 3rd</td>
</tr>
<tr>
<td>3. 1st</td>
<td>3. 2nd</td>
<td>3. 3rd</td>
</tr>
</tbody>
</table>
<br>
<div class="actions"><a id="add_row">Add Row</a></div>
推荐阅读
- c# - 在 MVC 中检查 ViewBag 的布尔值
- paypal - 如何使用 PayPal Invoicing webhook 上线?
- reactjs - 如何使用 jest 测试反应组件的标题?
- https - esp32、esp32_https_server 库、自签名证书、cors 和 499 状态码
- reactjs - 在 VS Code 中使用 Typescript 类型检查 React 组件道具
- c++ - 如何使用 Visual Studio 2019 从 ActiveX 控件添加类?
- java - 我怎样才能在没有发生之前获得锁?
- authentication - NiFi ListSFTP 连接器无法连接到 sftp 服务器
- excel - 无法设置字符类的文本属性
- python - 弹性网:标准化或规范化