成功调用Ajax后将函数重新绑定到锚标记

时间:2013-07-01 07:47:41

标签: javascript jquery

我在图像上有一个锚标记,用jQuery提取菜单。一旦用户点击图像,拉出菜单的功能就会从图像中解除绑定(因此他们不能多次点击它并弄乱所有内容的配置)。我正在使用AJAX在页面上提交表单,我希望函数只有在成功调用Ajax之后才能绑定回映像。

我已经看过其他类似的问题,但我并不清楚它与我的确切方式有何关系。这是我的jQuery代码。我没有把所有的代码都放进去,但我们假设AJAX调用是成功的(在代码的这一点上):

$('.modify_alert').click(function(){
    $('.modify_alert').unbind('click');
    $('.modify_alert').addClass('submit_upgrade');

        //A BUNCH OF CODE HERE


    //AJAX CALL FOR MODIFY ALERT
    $('.modify_check').click(function(e){
        e.preventDefault();

        //post variables
        //MORE CODE HERE
        $.ajax({
            type: 'POST', // HTTP method POST or GET
            url: 'ajax.php', //Where to make Ajax calls
            dataType:'text', // Data type, HTML, json etc.
            data:myData, //post variables
            success:function(response){

            //REFORMAT UPON SUCCESSFUL AJAX CALL (REMOVED CODE FOR SIMPLICITY)

            //TRYING TO REBIND THE FUNCTION HERE        
            $('.modify_alert').bind('click');

        },
        error:function (xhr, ajaxOptions, thrownError){
            alert('didn\'t work'); //throw any errors
        }
    });
});

我想我可以在解除绑定后将点击操作绑定回.modify_alert锚标记。我猜我不能那样做?谢谢你的帮助。我是AJAX的新手,我只想弄清楚如何将它们整合在一起。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

绑定或解除绑定处理程序时,应指定处理程序:

$('.modify_alert').click(function mdfclick(){
    $('.modify_alert').unbind('click', mdfclick);
    $('.modify_alert').addClass('submit_upgrade');

    //A BUNCH OF CODE HERE


    //AJAX CALL FOR MODIFY ALERT
    $('.modify_check').click(function (e){
        e.preventDefault();

        //post variables
        //MORE CODE HERE
        $.ajax({
            type: 'POST', // HTTP method POST or GET
            url: 'ajax.php', //Where to make Ajax calls
            dataType:'text', // Data type, HTML, json etc.
            data:myData, //post variables
            success:function(response){

            //REFORMAT UPON SUCCESSFUL AJAX CALL (REMOVED CODE FOR SIMPLICITY)

            //TRYING TO REBIND THE FUNCTION HERE        
            $('.modify_alert').bind('click', mdfclick);

        },
        error:function (xhr, ajaxOptions, thrownError){
            alert('didn\'t work'); //throw any errors
        }
    });
});