【问题标题】:How do I get the current row index of my table using Jquery?如何使用 Jquery 获取表的当前行索引?
【发布时间】:2016-04-29 13:17:24
【问题描述】:

所以我尝试使用 Jquery 获取表的行索引,但是我的代码为每一行返回相同的索引号。我需要找到索引来删除选定的行。但是,此代码仅删除最后一个值 到目前为止我所尝试的:

function updateCredentialList() {
    var index = $('.existingCredential').find('tr').closest('tr').index();
    var i = $('.existingCredential').find('tr:eq('+index+')').remove();
    alert(index);   
 }

我的桌子:

<c:choose>
            <c:when test="${action == 'edit'}"> 
            <td class="data">
            <input type="hidden" name="pkAdminCredentials" value="${environment.pkAdminCredentialIds}">
            <input type="hidden" name="dbCredentials" value="${environment.dbCredentialIds}">
            <table class="existingCredential">
            <tr>
                <th>Primary?</th>
                <th>Username</th>
                <th>Password</th>
                <th>ID</th>
            </tr>
            <c:forEach var="each" items="${environment.pkAdminCredentials}">
            <tr>
                <td class="edit">${each.primary ? 'Yes' : 'No'</td>
                <td class="edit">${each.username}</td>
                <td class="edit">${each.password}</td>
                <td class="edit">${each.id}</td>
                <td><a class="editCredential" class="openWindow" data-modal-id="existingCredential" data-credential-id="${each.id}">Edit</a></td>
                <td><a href="#">Delete</a></td>
            </tr>
            </c:forEach>
            </table>
            </td>
            </c:when>
 </c:choose>

【问题讨论】:

    标签: jquery html foreach


    【解决方案1】:

    要使用 jQuery 获取当前索引,一种可能是函数 index

    让我们创建一个包含 3 行的简单表和每行的 onclick 事件处理程序:

    $(function () {
      
      $('table').find('tr').on('click', function(e) {
        $(this).data('isSelected', true);
        $(this).siblings().data('isSelected', false);
        $('#log').append('<p>Current Index Row is: ' + $('table').find('tr').index(this) + '</p>')
      });
    
    
      $('#btn').on('click', function(e) {
        var selectedRow = $('table').find('tr').filter(function(index, element) {
          return $(this).data('isSelected') == true;
        });
        if (selectedRow.length == 1) {
          selectedRow.remove();
        }
      });
    
    });
    table, th, td {
      border: 1px solid black;
      width: 30%;
    }
    <script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
    
    <table>
        <tr>
            <td>Jill</td>
            <td>Smith</td>
            <td>50</td>
        </tr>
        <tr>
            <td>Eve</td>
            <td>Jackson</td>
            <td>94</td>
        </tr>
        <tr>
            <td>u1</td>
            <td>Jackson</td>
            <td>100</td>
        </tr>
    </table>
    <p>Click on a table row</p>
    <button id="btn">Remove the selected ROW (click on it before)</button>
    <div id="log"></div>

    【讨论】:

    • 非常感谢您的回答。但是$('table').find('tr').index(this) 在我的代码中不起作用(它只返回-1)。我想知道是因为每个人吗?同样$('table').find('tr').index() 只返回 7(在我的例子中是最后一个索引)`
    • @EoghanBuckey Snippet 更新了一个删除按钮:这是一个关于如何实现行删除的想法。我希望这可以帮助你
    • 非常感谢您的帮助!通过对选择器等进行一些小的编辑,这绝对完美。
    猜你喜欢
    • 2016-10-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2013-04-07
    • 2013-05-10
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    相关资源
    最近更新 更多