Jquery 如何使用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().

我正在将预期结果转换为json格式。我希望当我在db中单击关于状态字段的id imp时,图标被更改。数据库中的值在我单击时更新,但图标未更改。当在类中使用if语句根据来自json的状态在类之间切换时,我遇到了问题。我试过这个代码,但它对我不起作用。任何其他好的解决办法对我来说都是大有裨益的。多谢各位

$("#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>&nbsp;&nbsp;&nbsp;' +
                '<i class="icon-remove" style="color:#f34541;cursor:pointer" id="del_list" title="Delete"></i>&nbsp;&nbsp;&nbsp;' +
                '<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>&nbsp;&nbsp;&nbsp;' +
                        '<i class="icon-remove" style="color:#f34541;cursor:pointer" id="del_list" title="Delete"></i>&nbsp;&nbsp;&nbsp;' +
                        '<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。