Javascript 如何退出单击功能?

Javascript 如何退出单击功能?,javascript,jquery,ajax,Javascript,Jquery,Ajax,所以在这个例子中,我有一个隐藏字段和一个名为ban user的按钮的表单。单击“禁止用户”按钮时,它会提交隐藏字段中的值,并将ajax请求发送到Javaservlet。如果成功,将禁止该用户,并将按钮更改为“unban user”。问题是,当我单击一次按钮并禁止一个用户,然后再次尝试单击该按钮以取消禁止时,我仍然处于禁止用户的单击事件中,我收到警告“您确定要禁止id为…?”的用户吗?”。如何退出click事件,以确保再次单击按钮时,它从函数的开头开始,而不是在click函数内部开始?我试过使用“

所以在这个例子中,我有一个隐藏字段和一个名为ban user的按钮的表单。单击“禁止用户”按钮时,它会提交隐藏字段中的值,并将ajax请求发送到Javaservlet。如果成功,将禁止该用户,并将按钮更改为“unban user”。问题是,当我单击一次按钮并禁止一个用户,然后再次尝试单击该按钮以取消禁止时,我仍然处于禁止用户的单击事件中,我收到警告“您确定要禁止id为…?”的用户吗?”。如何退出click事件,以确保再次单击按钮时,它从函数的开头开始,而不是在click函数内部开始?我试过使用“return;”正如你在下面看到的,但这不起作用

$(document).delegate('form', 'click', function() {
var $form = $(this);
var id = $form.attr('id');
var formIdTrim = id.substring(0,7);
if(formIdTrim === "banUser") {
     $(id).submit(function(e){
        e.preventDefault();
     });

     var trimmed = id.substring(7);
     var dataString = $form.serialize();
     var userID = null;
     userID = $("input#ban"+ trimmed).val();

     $("#banButton"+ trimmed).click(function(e){
         e.preventDefault();

         //get the form data and then serialize that


         dataString = "userID=" + userID;

         // do the extra stuff here
         if (confirm('Are you sure you want to ban the user with the id of ' + trimmed +'?')) {
             $.ajax({
                 type: "POST",
                 url: "UserBan",
                 data: dataString,
                 dataType: "json",
                 success: function(data) {
                     if (data.success) {
                        //$("#banUser"+trimmed).html("");
                        $('#banUser'+trimmed).attr('id','unbanUser'+trimmed);
                        $('#ban'+trimmed).attr('id','unban'+trimmed);
                        $('#banButton'+trimmed).attr('value',' UnBan User ');
                        $('#banButton'+trimmed).attr('name','unbanButton'+trimmed);
                        $('#banButton'+trimmed).attr('id','unbanButton'+trimmed);
                        $form = null;
                        id = null;
                        formIdTrim = null;
                        return;
                      }else {
                         alert("Error");
                      }


                }
             });
         } else {

         }
     });
} 
else if(formIdTrim === "unbanUs") {

    //Stops the submit request
    $(id).submit(function(e){
       e.preventDefault();
    });

    var trimmed = id.substring(9);
    var dataString = $form.serialize();
    var userID = null;
    userID = $("input#unban"+ trimmed).val();

    $("#unbanButton"+ trimmed).click(function(e){
        e.preventDefault();

        //get the form data and then serialize that


        dataString = "userID=" + userID;

        // do the extra stuff here
        if (confirm('Are you sure you want to UNBAN the user with the id of ' + trimmed +'?')) {
            $.ajax({
                type: "POST",
                url: "UserUnban",
                data: dataString,
                dataType: "json",
                success: function(data) {
                    if (data.success) {
                        //$("#banUser"+trimmed).html("");
                        $('#unbanUser'+trimmed).attr('id','banUser'+trimmed);
                        $('#unban'+trimmed).attr('id','ban'+trimmed);
                        $('#unbanButton'+trimmed).attr('value',' Ban User ');
                        $('#unbanButton'+trimmed).attr('name','banButton'+trimmed);
                        $('#unbanButton'+trimmed).attr('id','banButton'+trimmed);
                        $form = null;
                        id = null;
                        formIdTrim = null;
                        return;
                     }else {
                         alert("Error");
                     }


                }
            });
        } else {

        }
    });
}


});
尝试:

$(“#banButton”+修剪)。关闭('click')。打开('click'),(函数(e){


我也遇到过类似的问题,这是一个解决方案

这段代码非常混乱。尝试在按钮上设置一个类,如“禁止”和“禁止”,当用户单击按钮时,您可以更改该类并做您想做的事情。您可以将html、javascript代码放在JSFIDLE.net中…然后我们可以查看它。而不必查看您的setup、 很难找到您期望的解决方案。此外,我觉得有一种类型,但我可能是错的。是否应该…否则如果(formIdTrim==“unbanUser”),我现在将它放在JSFIDLE上,但由于ajax,它不会运行或其他任何东西。关于formIdTrim,如果(formIdTrim==“unbanUs”),这是正确的,因为当我声明formIdTrim时,我使用var formIdTrim=id.substring(0,7);。unbanUs是它的前7个字母,它很接近,但当我再次单击它时,会出现错误的警报,但当我单击警报上的取消并再次单击禁止按钮时,会出现正确的警报。我说的有意义吗?