jquery .click()问题 - 第三次点击时触发

时间:2011-03-16 15:04:08

标签: php jquery

我正在尝试使用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;
    });

#activeDisp和#idDisp是文本框,当页面加载时,PHP会插入这些值。

欢呼声

1 个答案:

答案 0 :(得分:2)

<强>更新

你的代码重写应该是这样的:

$(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;
    });
});

注意:如果您将currentStatus设置为返回等于active的外观,则可以减少代码。