按钮在循环中,单击仅触发第一个按钮

buttons in loop, click trigger only first button

本文关键字:按钮 第一个 循环 单击      更新时间:2023-09-26

我做了一个循环,我根据颜色的数量放了几个按钮,但不管我点击什么按钮,它显示我点击了第一个,按钮是唯一的,我设置了它们的id。

html - loop

<td> <div> Add 2nd color </div> </td>
                    <td style="min-width:121px;position:relative;">
                    '.$pop['pop3'].'
                        <div id= "'.$i.'" class="btn save_img">  Choose image </div>

js:

$('.save_img').click(function(){
        onChooseImageClick();
    });
    function onChooseImageClick()
    {
        var rowId = $('.save_img').closest('tr').attr('row_id');
        alert(rowId);

警报总是给我编号1,无论我点击什么按钮,任何点寻找问题?

您需要找到被单击的save_img中最接近的tr,因为您需要知道哪个是被单击的元素。点击处理程序中的this指的是句柄所针对的元素(这里的save_img元素),因此将其传递给onChooseImageClick,然后使用该元素引用来查找tr元素

$('.save_img').click(function () {
    onChooseImageClick(this);
});
function onChooseImageClick(el) {
    var rowId = $(el).closest('tr').attr('row_id');
    alert(rowId);
}

$('.save_img').closest('tr')将返回所有包含.save_img元素的tr元素,然后.attr('row_id')将返回该集合中第一个元素的id


正如下面@John建议的,你也可以使用

$('.save_img').click(onChooseImageClick);
function onChooseImageClick(el) {
    var rowId = $(this).closest('tr').attr('row_id');
    alert(rowId);
}