Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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 jquery在动态创建的按钮上第二次不工作_Javascript_Jquery_Html - Fatal编程技术网

Javascript jquery在动态创建的按钮上第二次不工作

Javascript jquery在动态创建的按钮上第二次不工作,javascript,jquery,html,Javascript,Jquery,Html,我有一个jquery函数,可以打开对话框,编辑对话框,并在按下按钮时将值发送回表(在html页面中)。这些按钮是在JavaScript中动态创建的 场景1:假设我第一次创建了3个按钮,然后单击这三个按钮中的任意一个,然后jquery执行以打开对话框,读取值并将它们发送到html表行 场景2:现在,当我第二次添加更多按钮时,比如说在同一页面中添加2-第4和第5个按钮,然后在按下这些按钮(第4或第5个)时,对话框打开,从用户处读取值,但无法将其发送回html表行 如何解决这个问题 Jquery代码:

我有一个jquery函数,可以打开对话框,编辑对话框,并在按下按钮时将值发送回表(在html页面中)。这些按钮是在JavaScript中动态创建的

场景1:假设我第一次创建了3个按钮,然后单击这三个按钮中的任意一个,然后jquery执行以打开对话框,读取值并将它们发送到html表行

场景2:现在,当我第二次添加更多按钮时,比如说在同一页面中添加2-第4和第5个按钮,然后在按下这些按钮(第4或第5个)时,对话框打开,从用户处读取值,但无法将其发送回html表行

如何解决这个问题

Jquery代码:

$(document).on('click', "#opener", function () {
    pkg = ($(this).attr('name'));
    $("#dialog").dialog("open");
    $("#dialog").fadeOut(3000).html(data);
});
用于填充表行的函数(要填充的行号作为pkg从js传递)

错误表示未传递第四个或第五个按钮的包装值

动态创建按钮的js函数:

var cell6 = row.insertCell(5);
var element5 = document.createElement("input");
element5.type = "button";
element5.setAttribute('id', 'opener');
element5.setAttribute('name', (rowCount+1));
element5.value = 'X';
cell6.appendChild(element5);

可以使用属性
“class”
而不是
“id”
动态创建按钮并将其绑定到事件


另外,请确保您正在重新加载
JavaScript
以及页面的重新加载部分

您可以在单击时控制台记录“pkg”并检查一次吗?@Aditya pkg是我通过JavaScript传递的名称值(rowCount+1)。而在jquery中,您可以看到我将其捕获为pkg=($(this.attr('name'));看起来您正在使用相同的id创建多个按钮元素:
element5.setAttribute('id','opener')。这似乎与您的代码产生了冲突。。。ID应该是唯一的。也许你可以试试这样的<代码>元素5.setAttribute('id','opener'+(rowCount+1))使用类而不是id将不是一个选项
var cell6 = row.insertCell(5);
var element5 = document.createElement("input");
element5.type = "button";
element5.setAttribute('id', 'opener');
element5.setAttribute('name', (rowCount+1));
element5.value = 'X';
cell6.appendChild(element5);