问题描述
我有一个html表或html表中的数据网格。每行都有一个不同的用户信息和一个将文档上传到该用户的按钮。该表内置于for循环中。 jQuery总是返回第一行的ID。
如何识别用于jquery更改事件的按钮,以读取单击该按钮的行的用户ID?
<tr>
<td>@u.FirstName</td>
<td>@u.LastName</td>
<td>
<input type="file" class="uploadResume" id="Resdoc" userId="@u.ID" style="display:none" accept="application/pdf" />
<label for="Resdoc" class="btn btn-info mr-2" style="background-color:#336084;color:white;font-size:12px;">Resume</label>
</td>
</tr>
解决方法
您可以使用按钮类的$(this)选择器:
$(document).on("click",".btn",function() {
var x = $(this).siblings(".uploadResume");
alert(x.attr("userId"));
// do something
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td>@u.FirstName</td>
<td>@u.LastName</td>
<td>
<input type="file" class="uploadResume" id="ResDoc" userId="A1" style="display:none" accept="application/pdf" />
<label for="ResDoc" class="btn btn-info mr-2" style="background-color:#336084;color:white;font-size:12px;">Resume</label>
</td>
</tr>
<tr>
<td>@u.FirstName</td>
<td>@u.LastName</td>
<td>
<input type="file" class="uploadResume" id="ResDoc" userId="B2" style="display:none" accept="application/pdf" />
<label for="ResDoc" class="btn btn-info mr-2" style="background-color:#336084;color:white;font-size:12px;">Resume</label>
</td>
</tr>
<tr>
<td>@u.FirstName</td>
<td>@u.LastName</td>
<td>
<input type="file" class="uploadResume" id="ResDoc" userId="C3" style="display:none" accept="application/pdf" />
<label for="ResDoc" class="btn btn-info mr-2" style="background-color:#336084;color:white;font-size:12px;">Resume</label>
</td>
</tr>
</table>
,
我假设您还会有其他列,因此我编写了jQuery代码以查找所有的恢复按钮,并让它们在单击时记录其userId
。代码如下。
var uploadBtns = $(".uploadResume"); // the upload button(s)
uploadBtns.each(function() {
$(this).click(function() {
console.log($(this).attr("userId"));
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>@u.FirstName</td>
<td>@u.LastName</td>
<td>
<input type="file" class="uploadResume" id="ResDoc" userId="@u.ID" style="display:none" accept="application/pdf" />
<label for="ResDoc" class="btn btn-info mr-2" style="background-color:#336084;color:white;font-size:12px;">Resume</label>
</td>
</tr>
</tbody>
</table>