我在jquery中有每个循环,如下所示
some code---------
var temp="";
var msg_html="";
$.each(_d, function(index, val) {
var currentID=val.id;
if(temp.match(new RegExp("(?:^|,)"+currentID+"(?:,|$)"))) {
msg_html+'_'+currentID += messageTemplate(val.photo, val.from_name, val.message);
} else{
msg_html+'_'+currentID += messageTemplate(val.photo, val.from_name, val.message);
temp += currentID + ",";
}
});
some code ------------------
如果以上代码有效,我可以显示
$('#someID_0').html(msg_html_0);
$('#someID_1').html(msg_html_1);
$('#someID_2').html(msg_html_2);
----
---
---
此代码中的问题是“msg_html +'_'+ currentID”中的某些错误为无效赋值。还有其他动态分配方式吗?
答案 0 :(得分:2)
为什么不使用关联数组而不是尝试分配不同的变量,而不是使用数组的键作为ID?
因此您的代码将是:
some code---------
var temp="";
var msg_html={};
$.each(_d, function(index, val) {
var currentID=val.id;
if(temp.match(new RegExp("(?:^|,)"+currentID+"(?:,|$)"))) {
msg_html[currentID] += messageTemplate(val.photo, val.from_name, val.message);
} else{
msg_html[currentID] += messageTemplate(val.photo, val.from_name, val.message);
temp += currentID + ",";
}
});
some code ------------------
然后您可以使用以下方式显示您的html:
$.each(msg_html,function(index,val){
$('#someID_'+index).html(val);
----
---
---
});
答案 1 :(得分:0)
您可以使用eval
。
如,
$.each(_d, function(index, val) {
var currentID=val.id;
if(temp.match(new RegExp("(?:^|,)"+currentID+"(?:,|$)"))) {
eval("msg_html"+'_'+currentID +" += " + messageTemplate(val.photo, val.from_name, val.message));
} else{
eval("msg_html"+'_'+currentID +" += " + messageTemplate(val.photo, val.from_name, val.message));
temp += currentID + ",";
}
});
答案 2 :(得分:0)
我不确定这是您想要的,但您可以尝试使用StartsWith选择器以及each():
$("[id^='someID_']").each(function(index) {
$(this).html(msg_html + '_' + index);
});
答案 3 :(得分:0)
使用对象
var temp =“”; var msg_html = {};
$.each(_d, function(index, val) {
var currentID = val.id;
msg_html['_' + currentID] = '';
if (temp.match(new RegExp("(?:^|,)" + currentID + "(?:,|$)"))) {
msg_html['_' + currentID] += messageTemplate(val.photo, val.from_name, val.message);
} else {
msg_html['_' + currentID] += messageTemplate(val.photo, val.from_name, val.message);
temp += currentID + ",";
}
});
然后
$('#someID_0').html(msg_html._0);
$('#someID_1').html(msg_html._1);
$('#someID_2').html(msg_html._2);