2009-11-24 61 views
0

我正在一个样式表使用此命令:jQuery的:奇/偶行元素+徘徊

$("tr").filter(":odd").addClass("odd"); 

工作良好。现在我有一个悬停功能,当我将光标移动到一行时会显示光标。

问题:在悬停出来时,我希望表格行再次取回它的“奇怪”类,以保持2色布局。不幸的是它不起作用 - 悬停将导致一个普通的类。

这里是我徘徊代码:

function hover = function(tr,cod) 
{ 
    if(cod) 
    { 
     tr.addClass("hover"); 
    }else{ 
     if(tr.is(":odd")) 
     { 
      tr.addClass("odd"); 
     }else{ 
      tr.removeClass(); 
     } 
    } 
} 

谁能告诉我有什么不对?

thx提前。

+0

我建议使用':第n个孩子(奇数)'而不是':odd'过,至于原因,如果你曾经条纹在一个页面上复式表,并希望奇数和每个偶数行,这将成为明显表是相同的颜色:) – 2009-11-24 13:55:24

回答

2

您应该使用toggleClass()而不是addClass()+ removeClass()。

+0

谢谢,这正是我一直在寻找。 – Fuxi 2009-11-24 18:37:28

3

我想你想要这个:

function hover = function(tr,cod) 
{ 
    if(cod) 
    { 
     tr.addClass("hover"); 
    }else{ 
     tr.removeClass("hover"); 
    } 
} 

调用removeClass()是消除所有的类。由于节点可以应用多个类,所以只需添加和删除类就可以了,不管它是否奇怪。

1

你不需要删除所有添加的类。只需在您的css中使用!悬停类。它会覆盖奇怪的类。

.hover {background-color:green !important;} 
.odd {background-color:blue} 

$("#datatable tr:odd").addClass("odd"); 
$("#datatable tr").mouseover(function() { $(this).addClass("hover"); }); 
$("#datatable tr").mouseout(function() { $(this).removeClass("hover"); });