2011-09-25 88 views
0

在下面的代码中,当我使用CSS时,它的工作正常。当我将这个CSS添加到类中时,它不起作用为什么addClass在这段代码中不起作用

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

你可以进一步详细了解标记以及如何调用此函数?从你展示的内容看,这看起来很好。 (另外,就像优化说明一样,您应该缓存'$(“#”+ selection)'jQuery对象,因为创建新的jQuery对象很昂贵。) – Yahel

+1

验证类是否实际添加(firebug是您的朋友)。也许你只是在你的CSS中有一些错误... – ThiefMaster

+0

发布更多代码或生动的例子;上面的代码是正确的(以及yahelc; +1) – mreq

回答

1

我打赌发生的事情是,这个班正在被另一种风格所否决。这在这种情况下最明显。代码工作的前两行的原因是becaue他们直接编辑的风格,加入了类,层叠规则仍然适用

尝试这些:

<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"); 
    } 
} 
0

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

另外,你知道你可以链接在一起的jQuery功能?并且css有一个重载,它会获取键/值对的映射。

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