2011-06-01 77 views
2

我有这样的CSS规则addClass:JQuery的类时绑定到一个ID

#panelSeparator .active { 
    background: #fff url(../img/vgrabber.gif) no-repeat center; 
    opacity: 0.7; 
} 

我愿做这样的事在JS:

$('#panelSeparator').addClass('active'); 

我应该如何改变addClass的参数为了使其工作?

感谢,

+3

我没有看到这里的问题。该代码应该工作得很好。 – 2011-06-01 14:57:06

+0

只有当CSS选择器被链接时,jQuery才能正常工作,'#panelSeparator.active {}'意味着选择一个具有** ID和类的元素,这就是jQuery正在做的事情,添加类到相同的元素 - 根据[布赖恩费舍尔的答案](http://stackoverflow.com/questions/6203218/jquery-addclass-when-the-class-is-bound-to-an-id/6203286#6203286) – clairesuzy 2011-06-01 15:04:18

回答

8

尝试之间#panelSeparator .active取出空间,因此它是#panelSeparator.active

+5

+1,详细说明是因为'#panelSeparator .active'引用了一个元素,该元素的类型为'active',它位于DOM树中id为'panelSeparator'的元素之后。删除空格使其查找具有ID和Class的元素。 – Robert 2011-06-01 15:01:09

0

你的CSS定义这势必会与ID为“panelSeperator”元素的所有子类。你应该使用jQuery.children()函数(http://api.jquery.com/children/);

$('#panelSeparator').children().addClass('active'); 
0

如果您想保留相同的CSS,那么您需要在Javascript中执行类似$('#panelSeparator div').addClass('active');的操作。基本上,你必须在#panelSeparator元素中选择一个元素。

或者你可以保持相同的Javascript和只需更改CSS来#panelSeparator.active

0

你尝试,

$('#panelSeparator').addClass('panelSeparator active');