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

时间:2013-12-26 17:07:26

标签: javascript jquery html

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

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

场景2:现在当我第二次添加更多按钮时,在同一页面中说出第2和第5个按钮,然后在按下这些(第4或第5个)新创建的按钮时,对话框打开读取来自用户,但无法将其发送回html表格行。

如何解决此问题?

Jquery代码:

$(document).on('click', "#opener", function () {
    pkg = ($(this).attr('name'));
    $("#dialog").dialog("open");
    $("#dialog").fadeOut(3000).html(data);
});

填充表格行的功能(要填充的行号从js传递为pkg)

function PopulateForm(){
    document.getElementById("weight" +  pkg).value=document.getElementById("wt").value;
    document.getElementById("length" +  pkg).value=document.getElementById("lgt").value;
    document.getElementById("width" +  
        pkg).value=document.getElementById("wdt").value;
    document.getElementById("height" + pkg).value=document.getElementById("ht").value;  
    $( "#dialog" ).dialog( "close" );
}

错误表示第4或第5按钮pkg值未通过。

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);

1 个答案:

答案 0 :(得分:-1)

您可以使用属性"class"代替"id"来动态创建按钮并将其绑定到事件

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