jquery如何在表行中找到具有类似ID的选择器

时间:2011-07-20 08:43:00

标签: jquery

我有一个表,每行有一些输入和一个编辑按钮。我需要在用户单击编辑按钮时,我可以在此行中获取输入值,然后执行其他操作。 我使用这段代码,但不行。

$("#editRowButton").click(function () {
     var currentTablerow = $(this).parent().parent();
     var txtNameValue = $(currentTablerow).find('input[id*="txtName"]').val();
});

我的表结构如下

  <table id="Table2">
        <thead>
            <tr>
                <th>
                    Name
                </th>
                <th>
                    Family
                </th>
                <th>
                </th>
            </tr>
        </thead>
        <tbody>
            <tr class="itemRow">
                <td>
                    <asp:TextBox Width="70px" ID="txtName" runat="server"></asp:TextBox>
                </td>
                <td>
                    <asp:TextBox Width="70px" ID="txtFamily" runat="server"></asp:TextBox>
                </td>
                <td>
                    <img id="editRowButton"  src="../Images/Edit.gif" />
                </td>
            </tr>
                    </tbody>
    </table

&GT; itemRow由asp.net listview控件重复 问题出现在下面的代码

 var currentTablerow = $(this).parent().parent();
    var txtNameValue = $(currentTablerow).find('input[id*="txtName"]').val();

我如何用其他解决方案替换查找

2 个答案:

答案 0 :(得分:2)

首先,您不能拥有多个具有相同ID的元素。其次,编写如下代码会更容易

$(".editRowButton").live('click', function () {
    // To get the closest parent element that is a table row
    var currentTablerow = $(this).closest('tr');
    // To get all of the inputs
    var inputs = currentTablerow.find('input');

    // use the values
    alert(inputs.filter('.name').val());
});

这也意味着你的html应该类似于

<tr>
    <td><input type="text" class="name" /></td>
    <td><input type="text" class="email" /></td>
    <td><button class="editRowButton">Edit</button></td>
</tr>

答案 1 :(得分:0)

在此代码中,如果find调用返回多于1个输入字段会发生什么?你不能从这样的数组中获取值,你需要遍历它并对每个值做一些事情。

此外,什么不起作用?也许你可以在http://jsfiddle.net/

上加上简洁的例子