调用表行名称属性而不是.eq(n)

时间:2014-08-28 06:51:50

标签: javascript jquery

我希望这段代码可以重复使用,而不是:

$(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

3 个答案:

答案 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");
});