Jquery 如何使用if语句过滤来自json的数据
我正在将预期结果转换为json格式。我希望当我在db中单击关于状态字段的id imp时,图标被更改。数据库中的值在我单击时更新,但图标未更改。当在类中使用if语句根据来自json的状态在类之间切换时,我遇到了问题。我试过这个代码,但它对我不起作用。任何其他好的解决办法对我来说都是大有裨益的。多谢各位Jquery 如何使用if语句过滤来自json的数据,jquery,html,ajax,json,Jquery,Html,Ajax,Json,我正在将预期结果转换为json格式。我希望当我在db中单击关于状态字段的id imp时,图标被更改。数据库中的值在我单击时更新,但图标未更改。当在类中使用if语句根据来自json的状态在类之间切换时,我遇到了问题。我试过这个代码,但它对我不起作用。任何其他好的解决办法对我来说都是大有裨益的。多谢各位 $("#imp").live('click',function(){ $this = $(this); var ids = $(this).prev().prev().prev().
$("#imp").live('click',function(){
$this = $(this);
var ids = $(this).prev().prev().prev().prev().attr("class");
var impt = $(this).prev().attr("class");
var alllist = "";
$.ajax({
type: "POST",
url: "<?php echo base_url().'index.php/cms/mark_imp'; ?>",
dataType: "json",
data: {
'id' : ids,
'imp' : impt
},
beforeSend: function()
{
},
success: function(data)
{
var list_len = data.length;
for(var i=0;i<list_len;i++)
{
var imp_status = data[i].important;
alllist += '<li class="list-group-item"><span>' +
data[i].list + '</span><span class="pull-right"><span class="'+ data[i].id +'"></span>' +
'<i class="icon-pencil" style="color:#f8a326"></i> ' +
'<i class="icon-remove" style="color:#f34541;cursor:pointer" id="del_list" title="Delete"></i> ' +
'<span class="'+ data[i].important +'"></span><i class="" style="color:#00acec;cursor:pointer" title="Mark as important" id="imp"></i></span></li>';
if(imp_status === "0")
{
$this.addClass("icon-bookmark-empty");
}
if(imp_status === "1")
{
$this.addClass("icon-bookmark");
}
//here i want to add different class for different imp_status. Like given i want to add class icon-bookmark-empty when imp_status is 0 and when it is 1 i want to add icon-bookmark.
}
$("#inlist").html(alllist);
}
});
});
如果使用jQuery构造函数,则可以在其上使用jQuery的.addClass等。下面是一个简单的代码示例:
success: function(data) {
var list_len = data.length,
inlist = $("#inlist");
inlist.empty();
for(var i=0;i<list_len;i++) {
var imp_status = data[i].important,
item = $('<li></li>');
// Append spans, i's and other things you need
item.append('<span>Content</span');
if(imp_status == 'active') {
item.addClass('active');
} else {
item.addClass('somethingelse');
}
inlist.append(item);
}
}
如果我理解正确,你可以试试这个。在for循环中,只需添加以下if语句:
if(i == 0) {
$('.your-class-here').addClass('icon-bookmark-empty');
} else if (i == 1) {
$('.your-class-here').addClass('icon-bookmark');
}
因此,for循环将如下所示:
$("#imp").live('click',function(){
$this = $(this);
var ids = $(this).prev().prev().prev().prev().attr("class");
var impt = $(this).prev().attr("class");
var alllist = "";
$.ajax({
type: "POST",
url: "<?php echo base_url().'index.php/cms/mark_imp'; ?>",
dataType: "json",
data: {
'id' : ids,
'imp' : impt
},
beforeSend: function()
{
},
success: function(data)
{
var list_len = data.length;
for(var i=0;i<list_len;i++)
{
var imp_status = data[i].important;
alllist += '<li class="list-group-item"><span>' +
data[i].list + '</span><span class="pull-right"><span class="'+ data[i].id +'"></span>' +
'<i class="icon-pencil" style="color:#f8a326"></i> ' +
'<i class="icon-remove" style="color:#f34541;cursor:pointer" id="del_list" title="Delete"></i> ' +
'<span class="'+ data[i].important +'"></span><i class="'+ if(imp_status === "0"){"icon-bookmark-empty"} if(imp_status === "1"){"icon-bookmark"} +'" style="color:#00acec;cursor:pointer" title="Mark as important" id="imp"></i></span></li>';
//here i want to add different class for different imp_status. Like given i want to add class icon-bookmark-empty when imp_status is 0 and when it is 1 i want to add icon-bookmark.
if(i == 0) {
$('.your-class-here').addClass('icon-bookmark-empty');
} else if (i == 1) {
$('.your-class-here').addClass('icon-bookmark');
}
}
$("#inlist").html(alllist);
}
});
});
这样,当循环开始计数时,如果i为0,它将向必需元素添加类;如果i为1,它将向必需元素添加一些不同的类。顺便说一句,.live已被弃用,请改用.on。请详细说明为什么不使用.live。。而且,我尝试了addclass方法,但它对我不起作用。看,我已经编辑了我的问题。当我使用它时,数据库中的值会更新,但图标会消失。@user254153您确定imp_状态等于0字符串吗?例如,它可以是0吗?实际上在db中,这个字段是布尔类型的。@user254153检查imp_status的值。我希望你们知道===和==?之间的区别,因为我使用的是布尔值true或false。像ifimp_status==true{……..}一样,我进入if,但不添加类。请帮忙。与iti相关的是从0到json对象长度的变量。它可以是从0开始的任何数字。它不仅仅是0或1。