在运行时jquery上更改id属性

时间:2014-01-07 11:50:09

标签: javascript jquery ajax

我有一个id = submit的提交按钮,用于保存新记录。

// Add new customer
                $("#submit").click(function() {
                    var data = $.param($("#form").serializeArray());
                    event.preventDefault();
                    $.ajax({
                        type: "POST",
                        url: "crudcustomers.php",
                        data: data,
                        success: function(msg) {
                            $("#message").attr('class', 'alert alert-success');
                            $("#message").html(msg);
                            // Rebind datagrid after record added.
                            getRecords();
                        }
                    });
                });

现在,当我更新现有记录时,我简单地将现有记录填充到表单字段中,并且在运行时我将id = submit更改为id = update。见下文。

 success: function(response) {
                            /*console.log(response);*/
                            // Taking ajax response into javascript objects to fill the form fields
                            object = $.parseJSON(response);
                            $("#customername").attr('value', object[0].name);
                            $("#customercnic").attr('value', object[0].cnic);
                            $("#customeraddress").attr('value', object[0].address);
                            $("#customeremail").attr('value', object[0].email);
                            $("#customerphone").attr('value', object[0].phone);
                            $("#submit").attr('id','update'); // i change the attr here 
                        }

现在我正在尝试运行一个函数

  // Update customers
                $("#update").click(function(){
                    alert("working");
                });

但是,不是运行警报功能,#update.click也在运行我的保存记录功能..我试过将它放在文件外面但已经不能正常工作

请帮帮我谢谢。

3 个答案:

答案 0 :(得分:3)

您应该使用委托,例如:

$(document).on('click','#update',function(){...});

提交时也一样:

$(document).on('click','#submit',function(){...});

文档应替换为最近的静态容器

据说,切换元素ID永远不是一个好主意AFAIK

答案 1 :(得分:1)

当你更改ID时,你也应该取消绑定事件处理程序,如下所示:

$("#submit").attr('id','update').off('click');

jQuery Off

答案 2 :(得分:1)

在这种情况下,您已更改了元素ID,但未更改附加到DOM对象的事件。

例如,您有一个DOM对象表单,其中id = submit,事件单击(function1(){})。

当你更改元素的id时,你有一个DOM对象Form,id = update和event click(function1(){}和function2(){})。

编辑:  你应该使用:$("#submit")。unbind("点击"); OR $("#update")。解绑("点击");