为什么addClass在此代码中不起作用

时间:2011-09-25 17:59:12

标签: jquery jquery-selectors

在我使用CSS的下面的函数代码中,它工作正常。当我将这个CSS添加到一个类时,它无法正常工作

function setTab(selection) {
        $("#"+selection).css('background', '#CC0000');
        $("#"+selection).css('color', '#ffffff');   
        // Both the Above statements works fine     
        $("#"+selection).addClass("selectedclass");//doesnot work 
    }   

    .selectedclass li{
        background: #CC0000;
        color: #ffffff;
    }

2 个答案:

答案 0 :(得分:1)

我打赌发生的事情是,这个班级被另一种风格所推翻。在这种情况下哪个是最明显的。前两行代码工作的原因是他们直接编辑样式,添加一个类,级联规则仍然适用

试试这些:

<style type="text/css">
    /* I'm guess at what I think you need, since I don't know your HTML structure. */
    body .selectedclass li,
    body ul .selectedclass li ,
    body ol .selectedclass li {
        background: #CC0000;
        color: #ffffff;
    }
</style>

您的代码很简单,所以它可能是正确的。但你可以这样清理它:

function setTab(selection)
{
    if ( typeof(selection) == "string" )
    {
        $( '#' + selection ).addClass( "selectedclass" );
    }
}   

答案 1 :(得分:0)

是否有可能比应用的类选择器更具体的选择器?您是否查看过Firebug中的元素以查看元素获取其属性的位置?使用前两个语句,您将直接在元素上设置样式,这将优先考虑。使用第二个,它将取决于您定义的各种样式,它们的顺序和特异性。也可能是您的类应用于错误的元素,即直接应用于li而不是父ulol)。在这种情况下,您需要将规则更改为li.selectedClass

另外,您是否知道可以将jQuery函数链接在一起? css有一个带有键/值对映射的重载。

function setTab(selection) {
    $("#"+selection).css({'background-color': '#CC0000', 'color' : '#ffffff'});
}