javascript - 如何动态地将 jquery ui 事件处理程序添加到动态创建的按钮?

标签 javascript jquery ajax jquery-ui

我有一个 jquery ui 模式对话框表单,可以将项目添加到表中。表列之一是我编辑相关行的链接。这是一个按钮对象,我想添加一个事件处理程序,当用户单击按钮时,它会运行 ajax 查询来拉回所选行 ID 的信息,并以表单显示该数据,以便用户编辑选定的行。

我试图让它使用相同的功能

$( ".edit-user" )
  .button()
  .click(function() {
    //do something here
});

这里是使用编辑按钮创建动态行的代码。我试图将“click”事件处理程序附加到动态创建的按钮。

        $( "#users tbody" ).append( "<tr>" +
          "<td><button class=\"edit-user\" id=\"edit-user-15\">Edit</button></td>" +
          "<td>" + mc_last_name.val() + "</td>" +
          first_name +
          "<td>" + mc_primary_address.val() + "</td>" +
          "<td>" + mc_primary_city.val() + "</td>" +
          "<td>" + mc_primary_state.val() + "</td>" +
          "<td>" + mc_primary_zipcode.val() + "</td>" +
          phone + 
          email_address +
          "<td>" + mc_primary_addcommunity.val() + "</td>" +
        "</tr>" );

        $(".edit-user").on('click','button',function(){
            var parameters = {
                "cid":this.id.replace(/\D/g,"")
            };

        $.ajax({
                url : "./getcontact.php",
                type: "POST",
                data : parameters,
                success: function(data, textStatus, jqXHR)
                {
                    var arr = data.split('|||');

                    $.each(arr,function(key,value) {
                        var temp = value.split(':::')
                        $("#" + temp[0]).val(temp[1]);
                    });

                    $( "#dialog-form" ).dialog( "open" );
                },
                error: function(jqXHR, textStatus, errorThrown)
                {
                  alert(errorThrown);
                }
            });
        });

我尝试了几种不同的选择:

 $('#edit-user-15').on('click', 'button', function() {
     //Run the display form function.
 });

 $('#edit-user-15').delegate('click', 'button', function() {
     //Run the display form function.
 });

我对 jquery 比较陌生......所以这些奇怪的错误很难解释我想要做什么。

正在寻找有关如何使桌面上的任意按钮使用特殊功能的想法?

谢谢 jlimted

最佳答案

使用这样的东西:

function appendButton(){
  $( "#users tbody" ).append( "<tr>" +
          "<td><button class=\"edit-user\" id=\"edit-user-15\">Edit</button></td>" +
          "<td>" + mc_last_name.val() + "</td>" +
          first_name +
          "<td>" + mc_primary_address.val() + "</td>" +
          "<td>" + mc_primary_city.val() + "</td>" +
          "<td>" + mc_primary_state.val() + "</td>" +
          "<td>" + mc_primary_zipcode.val() + "</td>" +
          phone + 
          email_address +
          "<td>" + mc_primary_addcommunity.val() + "</td>" +
        "</tr>" );

}

并将.edit-user类的处理程序预定义为

$(document).on("click",".edit-user",function(){
 //Your On Click part here 

});

这是工作 jsfiddle demo

关于javascript - 如何动态地将 jquery ui 事件处理程序添加到动态创建的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23820655/

相关文章:

javascript - 如何在 JavaScript 中访问 Django 脆标签数组?

javascript - senamion不能正常使用,浏览器版本错误

javascript - tomcat中只使用jsp和javascript/ajax/jQuery不使用php如何实现跨域访问?

javascript - 使用 jQuery 从 Html 表获取值并映射到 C# 列表

javascript - 如何在 Polymer 中连接两个类(普通类和绑定(bind)类)

javascript - 在 Echarts 中保存为图像时的图形标题

javascript - 表格行上的 OnClick - anchor 除外

jquery - 使用 jquery 更改另一个字段时如何触发隐藏表单字段值的更改

javascript - 更改自定义函数的内容

javascript - Rails4 - 对项目 Controller 的 AJAX 请求