Php jquery.click()问题-第三次单击时激发

Php jquery.click()问题-第三次单击时激发,php,jquery,Php,Jquery,我正在尝试使用jquery使用.ajax()更新数据库。其思想是,可以通过在数据库中设置一个标志(bool)来启用或禁用“用户”,该标志来自管理帐户,脚本“activate.php”只是执行数据库插入 这确实有效,但只有在我按了三次扳机之后,我才知道我做错了什么 代码如下: $('.changeStatus').click(function(){ var currentStatus = $('#activeDisp').attr('value'); var activat

我正在尝试使用jquery使用.ajax()更新数据库。其思想是,可以通过在数据库中设置一个标志(bool)来启用或禁用“用户”,该标志来自管理帐户,脚本“activate.php”只是执行数据库插入

这确实有效,但只有在我按了三次扳机之后,我才知道我做错了什么

代码如下:

$('.changeStatus').click(function(){


    var currentStatus   = $('#activeDisp').attr('value');
    var activate        = "";
    var changeText      = "";
    var id              = $('#idDisp').attr('value');

    switch(currentStatus){
        case "0":
           var activate = 1;
           var changeText = "disable this user";
           $('#activeDisp').val(activate);
           break;
        case "1":
           var activate = 0;
           var changeText = "enable this user";
           $('#activeDisp').val(activate);
           break;
    }
    var dataString      = 'id='+ id +'&active='+ activate;

            $.ajax({
                type: "POST",
                url: "activate.php",
                data: dataString,
                success: function(html) {
                $('.changeStatus').html("<a href='#' class='changeStatus'>"+ changeText +"</a>");
                //alert(html);
                }
               });
           return false;
    });
$('.changeStatus')。单击(函数(){
var currentStatus=$('#activeDisp').attr('value');
var=”;
var changeText=“”;
变量id=$('#idDisp').attr('value');
开关(当前状态){
案例“0”:
var=1;
var changeText=“禁用此用户”;
$('#activeDisp').val(激活);
打破
案例“1”:
var=0;
var changeText=“启用此用户”;
$('#activeDisp').val(激活);
打破
}
var dataString='id='+id+'&active='+activate;
$.ajax({
类型:“POST”,
url:“activate.php”,
数据:dataString,
成功:函数(html){
$('.changeStatus').html(“”);
//警报(html);
}
});
返回false;
});
#activeDisp和#idDisp是文本框,当页面加载时,PHP会将值插入其中


干杯

更新:

重写的代码应如下所示:

$(function() {
    $('.changeStatus').live('click',function() {
        var currentStatus = $('#activeDisp').val();
        var activate = (currentStatus == 1) ? 0: 1;
        var changeText = (currentStatus == 1) ? "disable this user": "enable this user";
        var id = $('#idDisp').val();
        $('#activeDisp').val(activate);
        var dataString = 'id=' + id + '&active=' + activate;    
        $.ajax({
            type: "POST",
            url: "activate.php",
            data: dataString,
            success: function(html) {
                $('.changeStatus').text(changeText);
            }
        });
        return false;
    });
});

注意:如果您设置
当前状态
以返回一个与
活动状态
相同的值,那么您可以得到更少的代码。

您的点击处理程序在Javascript中的何处添加?在
$(document).ready()
或其他地方?试试这个:$('.changeStatus').live('click',function(e){我正在使用谷歌代码,所以我现在得到了:Google.setOnLoadCallback(function(){$('.changeStatus').live('click',function(){干杯-我刚刚尝试了一下,但它似乎并没有解决问题,代码中是否还有其他需要修改的内容以使.live()正常工作?单击“”3次后,它完全按照预期工作…我已完全重写了您的代码。请看一看,并让我知道。