ajax成功后更改复选框的值

时间:2014-09-25 10:23:00

标签: jquery ajax json codeigniter

Ajax Jquery

 $(".myonoffswitch").live("click",function(){
 var prod_id = $(this).attr('id');
 var status = $(this).attr('value');
 var tdid =$(this).parent().prev().attr('class');
 var td = $(this).parent().prev();

 $.ajax({
        type: "POST",
        url: "<?php echo base_url().'index.php/cms/ads_status'; ?>",
         dataType: "json",
        data: {
            'prod_id': prod_id,
            'status' : status
        },
        success: function(msg)
        {
        var updated_status = msg[0].post_status;

            if(updated_status=="0" && tdid == prod_id){

                  $(".myonoffswitch").attr("value", updated_status);


            }
            if(updated_status=="1" && tdid == prod_id){

                $(".myonoffswitch").attr("value",updated_status);
            }
        }
    });

 });

HTML

  <table><tr>
 <?php foreach($get_product as $products) { ?>
 <td class="<?php echo $products->id ?>" id="on-of">
            <input type="checkbox" class="myonoffswitch" id="<?php echo $products->id; ?>" value="<?php echo $products->post_status;?>">
 </td>
 <?php } ?>
</tr></table>

嗨,这里我更新了复选框后点击0或1的值。如果复选框值为0,则在数据库中更新为1,反之亦然。我成功地从ajax获得了更新的值,当它试图用更新的值更改checkbox的值时,它将值更改为从foreach循环获得的所有复选框。我想将值更改为仅使用类.myonoffswitch的特定复选框,在该复选框上单击它而不是全部复选框。我怎样才能做到这一点。在ajax成功后使用$(this)代替使用.myonoffswitch,但我没有更改值。请问这是什么错误。谢谢。

1 个答案:

答案 0 :(得分:0)

你需要保存当前的&#34;这个&#34;稍后引用它的值:

 $(".myonoffswitch").live("click", function () {
     var $this = $(this);
     var prod_id = $this.attr('id');
     var status = $this.attr('value');
     var tdid = $this.parent().prev().attr('class');
     var td = $this.parent().prev();

         type: "POST",
         url: "<?php echo base_url().'index.php/cms/ads_status'; ?>",
         dataType: "json",
         data: {
             'prod_id': prod_id,
                 'status': status
         },
         success: function (msg) {
             var updated_status = msg[0].post_status;
             if (updated_status == "0" && tdid == prod_id) {
                 $this.attr("value", updated_status);
             }
             if (updated_status == "1" && tdid == prod_id) {
                 $this.attr("value", updated_status);
             }
         }
     });
 });

我养成了使用$为jQuery变量添加前缀的习惯,因此$this似乎是合适的。它还避免一遍又一遍地执行$(this)