我希望有人在这里提供的代码中帮助我。它只需要检查if语句(块)的单引号内的所有元素是否与数据库中相应的m.Menu_Item_Name相匹配。这只是我的aspx页面和jQuery的下拉列表。
如果if和else的其他if语句中的元素与m.Menu_Item_Name匹配,则分别显示特定标题“Accountants”,“Reports”和“Other”。现在问题是每个元素都在其特定的标题下,但是,它们正在重复。意味着每个标题出现不止一次,每次只显示一个元素。我只是想对它们进行分组,使它们出现一次,然后显示属于该标题的所有元素。
任何帮助将非常感谢。提前致谢。
if (m.Menu_Item_Name == 'Financial Statements' || m.Menu_Item_Name == 'Cover Sheet' || m.Menu_Item_Name == 'Letters' || m.Menu_Item_Name == 'Invites')
{
lielm += '<li><strong>Accountants</strong></li>';
lielm += '<li data-value="' + m.Menu_URL + '" title="' + m.Menu_Item_Name.replace('<strong>', '').replace('</strong>', '') + '">' + m.Menu_Item_Name + '</li>';
}
else if (m.Menu_Item_Name == 'Income Statement' || m.Menu_Item_Name == 'Balance Sheet' || m.Menu_Item_Name == 'Income Details' || m.Menu_Item_Name =='Ledger')
{
lielm += '<li><strong>Reports</strong></li>';
lielm += '<li data-value="' + m.Menu_URL + '" title="' + m.Menu_Item_Name.replace('<strong>', '').replace('</strong>', '') + '">' + m.Menu_Item_Name + '</li>';
}
else
{
lielm += '<li><strong>Other</strong></li>';
lielm += '<li data-value="' + m.Menu_URL + '" title="' + m.Menu_Item_Name.replace('<strong>', '').replace('</strong>', '') + '">' + m.Menu_Item_Name + '</li>';
}
问题是您在每次迭代中添加标头。你应该只做一次。将它放在循环之前的某处:
var accountantsItems = [];
var reportsItems = [];
var otherItems = [];
然后更改循环体以创建单独的数组:
if (m.Menu_Item_Name == 'Financial Statements' || m.Menu_Item_Name == 'Cover Sheet' || m.Menu_Item_Name == 'Letters' || m.Menu_Item_Name == 'Invites')
{
accountantsItems.push(m);
}
if (m.Menu_Item_Name == 'Income Statement' || m.Menu_Item_Name == 'Balance Sheet' || m.Menu_Item_Name == 'Income Details' || m.Menu_Item_Name =='Ledger')
{
reportsItems.push(m);
}
else
{
otherItems.push(m);
}
然后,在循环之后为三个数组运行另外三个循环:
var isAccountantsHeaderAdded = false;
var isReportsHeaderAdded = false;
var isOtherHeaderAdded = false;
$.each(accountantsItems, function( index, m ) {
if (!isAccountantsHeaderAdded){
lielm += '<li><strong>Accountants</strong></li>';
isAccountantsHeaderAdded = true;
}
lielm += '<li data-value="' + m.Menu_URL + '" title="' + m.Menu_Item_Name.replace('<strong>', '').replace('</strong>', '') + '">' + m.Menu_Item_Name + '</li>';
});
$.each(reportsItems, function( index, m ) {
if (!isReportsHeaderAdded){
lielm += '<li><strong>Reports</strong></li>';
isReportsHeaderAdded = true;
}
lielm += '<li data-value="' + m.Menu_URL + '" title="' + m.Menu_Item_Name.replace('<strong>', '').replace('</strong>', '') + '">' + m.Menu_Item_Name + '</li>';
}
$.each(otherItems, function( index, m ) {
if (!isOtherHeaderAdded){
lielm += '<li><strong>Other</strong></li>';
isOtherHeaderAdded= true;
}
lielm += '<li data-value="' + m.Menu_URL + '" title="' + m.Menu_Item_Name.replace('<strong>', '').replace('</strong>', '') + '">' + m.Menu_Item_Name + '</li>';
}