Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环中的按钮,单击仅触发第一个按钮_Javascript_Html_Button - Fatal编程技术网

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

Javascript 循环中的按钮,单击仅触发第一个按钮,javascript,html,button,Javascript,Html,Button,我做了一个循环,在循环中,我根据我得到的颜色数量放置了几个按钮,但无论我单击哪个按钮,它都会显示我单击第一个按钮,按钮是唯一的,我将它们设置为id html循环 <td> <div> Add 2nd color </div> </td> <td style="min-width:121px;position:relative;"> '.$pop['pop3'

我做了一个循环,在循环中,我根据我得到的颜色数量放置了几个按钮,但无论我单击哪个按钮,它都会显示我单击第一个按钮,按钮是唯一的,我将它们设置为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>

无论我点击什么按钮,警报总是给我第一个提示,找到问题点了吗?由于我尝试了几乎所有的方法,我不知道在哪里继续查找。

你需要找到最近的
tr
点击的
save\u img
,因为你需要知道哪个是点击的元素
click处理程序中的此
引用句柄所针对的元素(此处的
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')。最近('tr')
将返回具有
元素的所有
tr
元素。save_img
元素,然后
.attr('row_id')
将返回该集合中第一个元素的
id


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

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

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

好的,.save_img是被点击的“按钮”。@user3052629 no
$('.save_img')。最近('tr')
将返回类为
save_img
“$('.save_img')的元素的所有第一个
tr
祖先。最近('tr')将返回具有.save_img')元素的所有tr元素,它将在每一次中返回第一个tr。相同的元素lol,我知道它是那样愚蠢,非常感谢,这是答案,因为我试图在函数中写入“this”,但不理解为什么它不起作用。lol。你也可以在单击函数中使用eventarg,然后你不必传递“this”到您在处理程序中调用的函数,或者您可以通过注册事件“$('.save_img').click(onChooseImageClick(event))”立即将“onChooseImageClick”作为处理程序传递,然后通过事件获得clicked元素。Target作为第二个选项,您当前的方法同样有效$('.save_img').closest('tr').attr('row_id')); 最近的:“描述:对于集合中的每个元素,通过测试元素本身并在DOM树中向上遍历其祖先,获取与选择器匹配的第一个元素。”将始终选择第一个元素,因为您不引用单击的元素,而是引用具有类“最近”的所有元素
$('.save_img').click(onChooseImageClick);

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