最新消息: 新版网站上线了!!!

为什么jquery中的$(this)在 $.ajax中无法使用如何解决?解决办法:闭包

错误代码$(this)执行不成功:

            $('input[name="customfield_id[]"]').not('input:checked').click(function () {
                var field_id = $(this).val();    //$(this)这里执行成功
                var url = 'xxx/customfield_pro.php?doAction=CheckfieldValue&field_id='+field_id;
                $.ajax({
                    type: "post",
                    contentType: "application/json; charset=utf-8",
                    url: url,
                    dataType: "json",
                    success:function(data){
                        if(data.status==0){
                            $(this).attr("checked",false);  //$(this)这里执行不成功
                            alert(data.msg);
                        }
                    }
                });
                $(this).val();

            });

如下修改后能成功执行:

正确做法:你那个this指向的是ajax的配置,不是按钮,请认真看jquery的API,要做个闭包

            $('input[name="customfield_id[]"]').not('input:checked').click(function () {
                var field_id = $(this).val();
                var e = this;     //这里先赋值
                var url = 'xxx/customfield_pro.php?doAction=CheckfieldValue&field_id='+field_id;
                $.ajax({
                    type: "post",
                    contentType: "application/json; charset=utf-8",
                    url: url,
                    dataType: "json",
                    success:function(data){
                        if(data.status==0){
                            $(e).attr("checked",false);   //这是执行时成功的
                            alert(data.msg);
                        }
                    }
                });
                $(this).val();
            });


转载请注明:谷谷点程序 » 为什么jquery中的$(this)在 $.ajax中无法使用如何解决?解决办法:闭包