$(".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);
}
}
});
});
<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,但我没有更改值。请问这是什么错误。谢谢。
答案 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)
。