jquery 正确获取点击按钮的行索引

wtzytmuj  于 2023-08-04  发布在  jQuery
关注(0)|答案(4)|浏览(182)

我尝试了几种方法来获取表中单击按钮的行索引。
该表:

while ($info = mysqli_fetch_array($sql)) {
    echo "<tr>";
        echo "<th>{$info['name']}</th>";
        echo "<th>{$info['pass']}</th>";
        echo "<th><a href='http://{$info['link']}'>{$info['link']}</a></th>";
        echo "<th><div class='delbuttons'><button class='btn btn-info' data-toggle='modal' data-target='#myModal' id='{$info['id']}'>Delete</button></div></th>";
    echo "</tr>";
}
?>

字符串
这些是我尝试过的方法:

$(document).on('click', '.delbuttons button', function(event) {
    alert($(this).index());
}


但它总是返回**-1**。

$(document).on('click','.delbuttons button', function(event) {
    alert(this.rowIndex);
}


返回undefined

wb1gzix0

wb1gzix01#

您的问题在这一行:

alert($(this).index());

字符串
根据documentation
.index():从匹配的元素中搜索给定的元素。
因为你的button是div中唯一的元素,所以对应的结果总是0。
为了获得行索引,相反,获得最接近的tr的索引就足够了:

$(this).closest('tr').index()


在第二种方法中,您尝试获取单击按钮的rowIndex。但此属性只与表行元素相关。因此,在这种情况下,你会得到undefined

$(document).on('click','.delbuttons button', function(event) {
    console.log($(this).closest('tr').index());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table>
    <tr>
        <td>name1</td>
        <td>pass1</td>
        <td><a href="http://xxx">xxx</a></td>
        <td>
            <div class="delbuttons">
                <button class="btn btn-info" data-toggle="modal" data-target="#myModal" id="id1"> Delete</button>
            </div>
        </td>
    </tr>
    <tr>
        <td>name2</td>
        <td>pass2</td>
        <td><a href="http://xxx">xxx</a></td>
        <td>
            <div class="delbuttons">
                <button class="btn btn-info" data-toggle="modal" data-target="#myModal" id="id2"> Delete</button>
            </div>
        </td>
    </tr>
    <tr>
        <td>name3</td>
        <td>pass3</td>
        <td><a href="http://xxx">xxx</a></td>
        <td>
            <div class="delbuttons">
                <button class="btn btn-info" data-toggle="modal" data-target="#myModal" id="id3"> Delete</button>
            </div>
        </td>
    </tr>
</table>

的字符串

yqkkidmi

yqkkidmi2#

您可以:

$(document).on('click','.delbuttons button', function() {
    console.log($(this).closest('tr').get(0).rowIndex);
});

个字符

kmb7vmvb

kmb7vmvb3#

试试这样:

$(document).on('click','.delbuttons button', function() {
     console.log($(this).closest("tr").index(););
});

字符串
或试图

$(document).on('click','.delbuttons button', function() {
     console.log($(this).parent().index(););
});

jvlzgdj9

jvlzgdj94#

这是我发现的最简单的解决方案:

event.target.closest('tr').rowIndex

字符串

  1. event.target获取触发事件的当前按钮并执行此函数。
  2. closest('tr ')获取包含当前按钮的行。
  3. rowIndex获取表中的行的索引。

相关问题