Asp.net 将类添加到选定元素的选定选项

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)

为了证明我甚至可以在选项元素上使用Class属性,我尝试在静态页面中将Class属性添加到select元素的选项中,效果很好。我注意到没有多少在线资源记录了这一点,所以我想我会明确地记录下来

下面是试图向所选选项添加类的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的值中的一个简单错误。但是,现在它会运行正确大小写的代码,并且对项目的颜色没有任何影响。

看起来您的选择器有输入错误。除非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值来自何处?我最初尝试过你的样式。它产生一个语法异常。