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

时间:2015-05-18 08:51:24

标签: javascript html button

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

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号,无论我点击什么按钮,任何积分都可以找到问题?因为我几乎尝试了一切,而且我不知道在哪里继续寻找。

1 个答案:

答案 0 :(得分:2)

您需要找到被点击的tr中最近的save_img,因为您需要知道哪个是点击的元素。单击处理程序中的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')将返回具有tr元素的所有.save_img元素,然后.attr('row_id')将返回该集合中第一个元素的id。< / p>

正如@John在下面建议的那样你也可以使用

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

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