JQUERY在$.each循环中获取前一个和下一个值

5gfr0r5j  于 2023-10-17  发布在  jQuery
关注(0)|答案(2)|浏览(171)

我在JQUERY的循环中遇到了问题。我检索感谢“获取”查询一些数据(JSON格式)。
我想将这些数据插入到一个带有“optgroup”的列表中。但我不太适合做选择组。
在插入optgroup之前,我想在$.each循环中**比较前一个值和当前值:
=> IF current_value(v.SG_CODE)!= previous_value(v.SG_CODE)然后添加optgroup
但我不知道怎么弄到。你能帮帮我吗?
我有这个代码:

function myFunction (param){

        var select = $("#myselect");
        select.empty();
        select.append(
            new Option('Loading...', '-1')
        );
        var jqXHR = $.getJSON( "myCFC.cfc", {
            "method" : "myMethod",
            "param":    param,
        });

        setTimeout( function(){
        // If status in pending, call the method fail   
            if ( jqXHR && jqXHR.state() === "pending" ){
                jqXHR.abort();
            }
        }, 3000 ); // 3s

        jqXHR.done( function( data, textStatus, jqXHR ){
            // success - Treatment of the request
            //console.log( data, textStatus, jqXHR );
            select.empty();     
            console.log(data.length);
            if(data.length>0){
                select.show();                      
                $.each(data,function(k,v){          
                    //alert(v.ID + " --- " + v.VALUE);                              
                        select.append('<optgroup label="' + v.SG_CODE +'">');       
                        select.append('<option value="' + v.ID + '">' + v.SUBJECT_CODE + '</option>');      
                        select.append('</optgroup>');                                       
                });
            }else{
                select.hide();
            }
        });

        jqXHR.fail( function( jqXHR, textStatus, errorThrown ){
            // AJAX Request failed
            console.log( jqXHR, textStatus, errorThrown ); 
        });

        jqXHR.always( function( jqXHR, textStatus ){
        //console.log( jqXHR, textStatus );
        })
    }

非常感谢您的帮助。
此致,
Seb

bvpmtnay

bvpmtnay1#

您可以使用以下命令访问以前的值:

data[k-1].SG_CODE

但首先测试 k 为非零,因为零没有前面的元素,引用SG_CODE或其他属性将触发异常。所以你的if看起来像这样:

if (k == 0 || v.SG_CODE != data[k-1].SG_CODE) {
    // ... add
}
kknvjkwl

kknvjkwl2#

最简单的方法是,你可以做它简单地存储在临时变量的最后一个键

var lastKey = -1
$.each(data,function(k,v){

   if(data[lastKey]. SG_CODE !== v. SG_CODE ){
       //add to group
   }
   lastKey = k;
}

相关问题