Asp.net 将类添加到选定元素的选定选项
为了证明我甚至可以在选项元素上使用Class属性,我尝试在静态页面中将Class属性添加到select元素的选项中,效果很好。我注意到没有多少在线资源记录了这一点,所以我想我会明确地记录下来 下面是试图向所选选项添加类的jquery代码Asp.net 将类添加到选定元素的选定选项,asp.net,jquery,Asp.net,Jquery,为了证明我甚至可以在选项元素上使用Class属性,我尝试在静态页面中将Class属性添加到select元素的选项中,效果很好。我注意到没有多少在线资源记录了这一点,所以我想我会明确地记录下来 下面是试图向所选选项添加类的jquery代码 ChangeDdlItemBG : function(obj, compLev) { var ddl = $(obj); var index = ddl.attr('selectedIndex'); switch(compLev)
ChangeDdlItemBG : function(obj, compLev)
{
var ddl = $(obj);
var index = ddl.attr('selectedIndex');
switch(compLev)
{
case ComplianceLevel.Compliant :
$(ddl.attr('id') + ': selected').addClass('Compliant');
break;
case ComplianceLevel.OtherThanSerious :
$(ddl.attr('id') + ': selected').addClass('OtherThanSerious');
break;
case ComplianceLevel.Serious :
$(ddl.attr('id') + ': selected').addClass('Serious');
break;
case ComplianceLevel.Critical :
$(ddl.attr('id') + ': selected').addClass('Critical');
break;
}
}
var ComplianceLevel =
{
Compliant : function() { return 0; },
OtherThanSerious : function() { return 1; },
Serious : function() { return 2; },
Critical : function() { return 3; },
};
根据新信息,我发现没有发生任何事件的原因是传递给compLev的值中的一个简单错误。但是,现在它会运行正确大小写的代码,并且对项目的颜色没有任何影响。看起来您的选择器有输入错误。除非ddl.attr'id'是元素的一种类型,否则代码不会向任何内容添加类。我认为您需要$+ddl.attr'id'+':selected'您当然可以减少冗余 此外,您还必须运行函数,以便将其返回值与compLev进行比较:
function(obj, compLev) {
var optClass = "";
switch (compLev) {
case ComplianceLevel.Compliant() :
optClass = 'Compliant';
break;
case ComplianceLevel.OtherThanSerious() :
optClass = 'OtherThanSerious';
break;
case ComplianceLevel.Serious() :
optClass = 'Serious';
break;
case ComplianceLevel.Critical() :
optClass = 'Critical';
break;
}
$(obj).find("option:selected").addClass(optClass).siblings().removeClass();
}
很抱歉,这是一个问题。。。上面发布的代码与我预期的不符。这些类声明了背景色规则,以更改选定项的背景色。我是否需要回发才能显示此内容?@Matthew您需要在SELECT元素的change事件上运行该函数。在这种情况下,您不需要传入对元素的引用,因为this值引用了该元素。@Sime Vidas,我肯定是在select elm中的onchance事件中运行该函数。@Matthew您是这样做的吗:?正确,但是,它首先调用一个单独的方法,然后调用changedlItemBG。因此,我们的想法是将一个事件绑定到select elm,然后在回调函数中执行更改?请记住,我正在select elm的onchange事件中运行标记中的函数。我只是不认为发布代码是必要的。@Matthew您是否希望只有选定的选项设置了类?或者每个选项?另一个注意,有多个下拉列表,最多50个。编译时不知道数字,因为我正在使用repeater ASP.NET控件创建它们。@Matthew compLev值来自何处?我最初尝试过你的样式。它产生一个语法异常。