为了证明我甚至可以在选项elem上使用Class属性,我尝试将类属性添加到静态页面中选择元素的选项,并且工作正常。我注意到没有多少在线资源记录下来,所以我想我会明确设置记录。
这是尝试将类添加到所选选项的jquery代码
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传入的值中的一个简单错误。但是,现在它会运行正确大小写的代码,并且对项目的颜色没有任何作用。
答案 0 :(得分:1)
您当然可以减少冗余。
此外,您必须运行这些函数,以便将它们的返回值与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();
}
答案 1 :(得分:0)
看起来您的选择器有拼写错误。除非ddl.attr('id')
是一种元素,否则您的代码不会向任何内容添加类。我想你想要$('#' + ddl.attr('id') + ':selected')