我希望这段代码可以重复使用,而不是:
$(this).closest("tr").find("td input").eq(1).val()
我希望通过以下方式使用名称来调用它:
(($(this).closest("tr").find("td input").attr("name")
)所以我不必设置每个.eq(n)
但它不起作用:
这是我的jquery代码:
$('.tdiv').on("click", "#tddelete", function () {
if ($(this).closest("tr").find("td input").eq(1).val() == "ADD") alert("add");
else alert("change");
});
查看我的第一段代码FIDDLE。
答案 0 :(得分:2)
id
属性应该是唯一的。你也在寻找jQuery中的属性选择器。 EG。
$(this).closest("tr").find("td input[type='text']").val();
<强> JS 强>
$('.tdiv').on("click", ".tddelete", function () {
var inputVal = $(this).closest("tr").find("td input[type='text']").val();
alert(inputVal);
});
<强> UPDATE FIDDLE 强>
基于评论的更新
您的表格单元格中可能有多个text
类型的输入。因此我建议在输入元素中添加一个类,以便从中获取值。
<强> HTML 强>
<table class="tdiv">
<tr>
<td>
<input type="button" class="tddelete" />
</td>
<td>
<input type="text" class="getVal" value="ADD" />
</td>
</tr>
<tr>
<td>
<input type="button" class="tddelete" />
</td>
<td>
<input type="text" class="getVal" value="CHANGE" />
</td>
</tr>
</table>
<强> JS 强>
$('.tdiv').on("click", ".tddelete", function () {
var inputVal = $(this).closest("tr").find(".getVal").val();
alert(inputVal);
});
<强> EXAMPLE FIDDLE 强>
答案 1 :(得分:1)
首先,您不应该为多个元素使用id,因此请将id="tddelete"
更改为class="tddelete"
所有按钮元素。
<input type="button" class="tddelete" />
您可以在按钮的父td
的下一个td
中找到输入元素。不要忘记为输入元素添加name
属性。
$('.tdiv').on("click", ".tddelete", function () {
var val = $(this).closest("td").siblings().find("input[name=flag]").val();
alert(val);
});
<强> Demo 强>
答案 2 :(得分:0)
不使用attr,而是在find方法.find("td input[name=somename]")
$('.tdiv').on("click", "#tddelete", function () {
if ($(this).closest("tr").find("td input[name=somename]").eq(1).val() == "ADD") alert("add");
else alert("change");
});