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

buttons in loop, click trigger only first button

我做了一个循环,在这个循环中我根据我得到的颜色数量放置了几个按钮,但是无论我点击哪个按钮,它都显示我点击第一个按钮,按钮是唯一的,我设置他们 id.

html - 循环

<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') 将 return 所有具有 .save_img 元素的 tr 元素,然后 .attr('row_id') 将 return id 该集合中的第一个元素。


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

$('.save_img').click(onChooseImageClick);

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