如果标题已存在,如何使下拉列表不包含标题

问题描述 投票:1回答:1

我希望有人在这里提供的代码中帮助我。它只需要检查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>';
    }
javascript c# jquery asp.net
1个回答
0
投票

问题是您在每次迭代中添加标头。你应该只做一次。将它放在循环之前的某处:

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>';
}
© www.soinside.com 2019 - 2024. All rights reserved.