我在JQUERY的循环中遇到了问题。感谢“get”查询一些数据(采用JSON格式)。
我想将这些数据插入带有“optgroup”的下拉列表中。但我在做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
答案 0 :(得分:0)
您可以使用以下方式访问上一个值:
data[k-1].SG_CODE
但首先测试 k 为非零,因为零没有前一个元素,引用SG_CODE
或其他属性会触发异常。所以你的if
看起来像这样:
if (k == 0 || v.SG_CODE != data[k-1].SG_CODE) {
// ... add
}
答案 1 :(得分:0)
最简单的方法是,您只需将最后一个密钥存储在临时变量
中即可var lastKey = -1
$.each(data,function(k,v){
if(data[lastKey]. SG_CODE !== v. SG_CODE ){
//add to group
}
lastKey = k;
}