2009-11-24 3 views
0

je suis style d'une table avec cette commande:jquery: impairs/ramer + éléments planent

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

fonctionne bien. maintenant j'ai une fonction de survol qui montrerait un curseur quand je déplace le curseur sur une rangée. Le problème: lors d'un hover-out, je veux que la ligne du tableau récupère à nouveau sa classe "impair", afin de conserver la disposition en 2 couleurs. Malheureusement, cela ne fonctionne pas - planer entraînera une classe ordinaire.

voici mon vol stationnaire code:

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

quelqu'un peut me dire ce qui ne va pas?

merci d'avance.

+0

Je suggère d'utiliser ': nième enfant (impair)' 'par opposition à: odd' aussi, pour des raisons qui deviendront évidentes si jamais vous bande mutliple tables sur une page et que vous voulez lignes paires et impaires dans chaque table pour être la même couleur :) –

Répondre

2

Vous devez utiliser toggleClass() au lieu de addClass() + removeClass().

+0

merci, c'était exactement ce que je cherchais. – Fuxi

3

Je pense que vous voulez ceci:

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

Appel removeClass() enlève toutes les classes. Puisque les nœuds peuvent avoir plusieurs classes appliquées, il suffit d'ajouter et de supprimer la classe hover, qu'elle soit impaire ou non.

1

vous n'avez pas besoin de supprimer toutes les classes ajoutées. Utilisez simplement! important dans votre CSS pour la classe de vol stationnaire. il va remplacer la classe impaire.

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