Vérifier si la Table tr a de la classe, puis les retirer et ajouter une nouvelle classe sur le vol Stationnaire de l'événement

J'essaie de mettre en évidence les lignes de la table sur la souris passe dessus. Le chaque ligne (tr) a une classe de "pair" ou "impair" déjà. Ainsi, pour mettre en surbrillance la ligne sur la souris passe dessus, j'ai besoin de supprimer la classe CSS "pair" ou"impair" à partir de la ligne en premier. Veuillez prendre beaucoup à mon script:

$('tr').hover(function() {

  if ($('this').hasClass('even')) {
    $(this).removeClass('even');
    $(this).addClass('rowhover');
  }

  else {
    $(this).removeClass('odd');
    $(this).addClass('rowhover');
  }
},
function() {
  $(this).removeClass('rowhover');
});

Mais ça ne fonctionne pas. Pouvez-vous m'indiquer l'erreur? Merci.

Mise à jour 1:

J'ai utilisé ce toggleClass liket ce

$("tr").hover(function() {
$(this).toggleClass("rowhover");
});

Ensuite, j'ai utilisé firebug pour inspecter l'élément, le tr a obtenu la classe comme ceci:

<tr class="even rowhover"> where it should be <tr class="rowhover">

Même résultat si j'utilise qqch comme ceci:

$('tr').hover(function() {

    $(this).addClass('rowhover');
    },
 function() {
    $(this).removeClass('rowhover');        
});

Mon CSS pour rowhover classe

.rowhover {background:green !important;} 

Mise à jour 2:

J'ai essayé la suggestion de la part de Justin Johnson :

$('tr').hover(function() {
    $(this).removeClass('even odd').addClass('rowhover');
        },
    function() {
     $(this).removeClass('rowhover').addClass(this.rowIndex % 2 == 0 ? "even" : "odd");
  });

J'ai inspecté l'élément avec FireBug, voici le résultat:

//Notice the space in the class=" rowhover" when mouse hover
     <tr class=" rowhover">

 //Notice the space in the class=" even", class=" odd" when mouse out
 <tr class=" even"> or <tr class=" odd">

Mise à jour 3 : Il est travail!

J'ai suivi un post à jQuery - des Démonstrations et des Exemples de Tablesorter Plug-in mais j'ai besoin d'ajouter !important pour remplacer la précédente style comme ceci :

tr.overRow td { background-color:#FFFF99 !important; border :2px; }

J'ai ajouté que la règle vers le bas de la feuille de style de tablesorter, puis utilisé le script suivant pour le manipuler:

//Adds "over" class to rows on mouseover
$(".tablesorter tr").mouseover(function() { $(this).addClass("overRow"); });
//Removes "over" class from rows on mouseout
$(".tablesorter tr").mouseout(function() { $(this).removeClass("overRow"); }); 

Maintenant, tout fonctionne comme il veut. Merci à vous tous pour la suggestion. Désolé de ne pas mentionner en premier lieu que je suis en utilisant jQuery plugin tablesorter, et je veux juste mettre en surbrillance la ligne sur le vol stationnaire de l'événement.

😀

  • Concernant votre mise à jour: voir ma solution. Vous voulez probablement .même.rowhover, .impair.rowhover au lieu de simplement .rowhover ... ou vous pourriez utiliser !important, mais c'est un dernier recours.
  • Oui, il est enveloppé à l'intérieur de $(document).prêt
  • J'ai réalisé quand vous avez dit que vous avez pu voir les classes dans firebug :). De toute façon j'ai essayé vos méthodes en FF localement ici et il est de travail (apparemment avec le toggleClass (tons de vert). pouvez-vous définir "ne travaillent pas". Parce que dans firebug si vous pouvez voir les classes, il faut l'appliquer?
  • Les espaces sont très bien (comme par mise à jour 2). Une autre question idiote. Est vos pairs et impairs style de l'application? Où est votre css assis? Êtes-vous sûr que votre page est de le ramasser?
  • Quand j'ai passez la souris sur la ligne cette styple appliquée table.tablesorter tr td { background-color:#FFFFFF; } ou cette classe appliquée table.tablesorter tbody tr.bizarre td { background-color:#F0F0F6; } au lieu de la classe rowhover qui devrait remplacer la classe précédente Pourquoi la classe rowhover pas remplacer la précédente pair et de l'impair?
  • Dans votre mise à jour #2, vous ne devriez pas avoir à vous soucier de la place dans votre attribut de classe. Cela fonctionne?
  • fudgey Oui, maintenant ça fonctionne. Veuillez vérifier la mise à jour 3. Si vous le pouvez, s'il vous plaît marquer de la réponse que la Réponse que vous voyez l'ajustement.

InformationsquelleAutor Narazana | 2010-03-02