2011-05-16 56 views
2

我有一个表具有不同的类取决于它应该是什么颜色的行。点击一个按钮后,我希望该行的背景颜色立即改变。我试过.addClass().css(),但都失败了。点击时,我有一个函数来检查该行是否有颜色,工作正常。这里是我使用的代码片段,以及与这些行一起使用的css类。 @Jason非常感谢和奖励帮助。CSS不会动态改变.addClass()或.css()

如果某行是白色:

$("#"+table+"_row_"+id).addClass("table-1").removeClass("table-0");

$("#"+table+"_row_"+id).css("background-color","orange");

如果行为橙色:

$("#"+table+"_row_"+id).addClass("table-0").removeClass("table-1");

$("#"+table+"_row_"+id).css("background-color","white");

CSS:

table.tablesorter .table-1{ 
background-color:orange; 
} 
table.tablesorter .table-0{ 
background-color:white; 
} 
+4

我们在说什么样的报酬? :) – Jason 2011-05-16 23:10:46

+0

单击后检查行。确保应用了类/样式,如果有,请确定是否有任何东西被覆盖它们 – Phil 2011-05-16 23:15:41

+2

我唯一能想到的是'“#”+ table +“_ row _”+ id'不会给你想要的元素。检查该选择器是否给你任何元素,并验证它们是否正确。 – GolezTrol 2011-05-16 23:16:07

回答

3

我能想到的唯一的事情就是"#"+table+"_row_"+id不会给你你想要的元素。检查该选择器是否给你任何元素,并验证它们是否正确。

我更喜欢只为此使用类,因为否则当您刚刚从HTML中获取它时,仍然在代码中嵌入样式。你可以使用hasClass来做到这一点。

要加快处理速度存储参考:

var x = $('#'+table+'_row_'+id); 
if (x.hasClass('table-0')) 
{ 
    x.addClass('table-1').removeClass('table-0'); 
} 
else 
{ 
    x.addClass('table-0').removeClass('table-1'); 
} 

它使调试和更新也更容易,因为你知道,如果x是正确的一次,它将永远是正确的。你也可以更容易地检查它。

+0

你是对的,'id'在我将它设置为var之前一直返回undefined。奇怪的。感谢您指出这些东西。 – 2011-05-16 23:25:11

+2

Golez,请与我们分享您作为奖励所得到的什么 – Jason 2011-05-16 23:29:46

+0

@Trevor Arjeski:这究竟是多么奇怪? – sevenseacat 2011-05-16 23:30:30

2

你检查CSS层叠顺序,或许与萤火虫或WebKit的网络督察?

更新CSS类时,您需要注意cascading order。否则,它可能不会成为你以后的效果。