我有一个由此创建的下拉列表:
C#:
public static List<SelectListItem> lstDailySumAssignments()
{
List<SelectListItem> lstAssignments = new List<SelectListItem>();
using(var context = new AviationLogsEntities())
{
List<codeAC> lstActivity = context.codeAC.Where(x => x.deleted == false).ToList();
List<string> lstCategories = new List<string>() { "STH", "NT", "STHLVGMA", "CS",
"S&R", "R", "S", "P", "D", "T", "P", "REFUSAL", "SERVICE & TESTING", "SE", "E",
"AG", "P", "P", "DA", "HTH",
};
List<string> lstTraining = new List<string>() { "SEH", "MEH", "SEA", "IT", "HT", "ELT",
"TO", "CSEH", "CMEH", "CSEA" };
var groups = lstActivity.OrderBy(x => x.codeAC.Text).ThenBy(x => lstTraining.IndexOf(x.text)).ThenBy(x => x.text).GroupBy(x => x.codeAC.Text).OrderBy(g => lstCategories.IndexOf(g.Key));
foreach(var group in groups)
{
var slg = new SelectListGroup() { Name = group.Key };
foreach(codeAC activity in group)
{
SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = slg };
lstAssignments.Add(item);
}
}
}
return lstAssignments;
}
现在我的 JavaScipt:
$(document).ready(function () {
$('#activityID').change(function () {
var selectedActivity = this.options[this.selectedIndex].parentNode.label;
if (selectedActivity === "STH") {
$('#EnsureTransport').show();
}
else if (selectedActivity !== "STH") {
$('#EnsureTransport').hide();
}
});
});
现在这种方法非常完美,但它对于用户更改来说却是静态的而不是动态的。因此,不是与文字字符串进行比较..有没有办法比较组的顺序?因为STH
是第一个组,或者<optgroup>
,因为它在HTML中呈现,我可以与之进行比较吗?
作为我试图解释的一个例子,我试过这个:
$(document).ready(function () {
$('#activityID').change(function () {
var selectedActivity = this.options[this.selectedIndex].parentNode.value;
if (selectedActivity === 1) {
$('#EnsureTransport').show();
}
else if (selectedActivity !== 1) {
$('#EnsureTransport').hide();
}
});
});
但这不起作用。
感谢任何帮助。
答案 0 :(得分:1)
所以,如果我是正确的,你想获得所选<optgroup>
的{{1}} <select>
的索引(顺序)。
给出一个基本的HTML示例,如:
<option>
您可以使用以下jQuery代码:
<select id="activityID">
<optgroup label="STH">
<option value="1">Activity 1</option>
<option value="2">Activity 2</option>
</optgroup>
<optgroup label="OTHER">
<option value="3">Activity 3</option>
<option value="4">Activity 4</option>
</optgroup>
<optgroup label="ANOTHER">
<option value="5">Activity 5</option>
<option value="6">Activity 6</option>
</optgroup>
</select>
输出结果为:
活动1 - &gt; 0
活动2 - &gt; 0
活动3 - &gt; 1
活动4 - &gt; 1
活动5 - &gt; 2
活动6 - &gt; 2
因此,在您的示例中,可以使用:
$(document).ready(function () {
$('#activityID').change(function () {
var selected = $("option:selected", this);
var groupIndex = selected.parent().index();
console.log(groupIndex);
});
});
请注意,索引从0而不是1开始。