2011-11-02 2 views
1

Je travaille sur la création d'un rapport tabulaire de certaines informations sur un site Web. Cette table est assez large, donc j'aimerais ajouter une bordure 4px à chaque ligne du vol stationnaire en utilisant jQuery. Voici mon script:jQuery-Mise en surbrillance des lignes de tableau dans Chrome

$(function() { 
    $('tr').hover(function() { 
     $(this).contents('td').css({'border-top':'4px solid #934739', 'border-bottom':'4px solid #934739'}); 
    }, 
    function() { 
     $(this).contents('td').css({'border-top':'1px solid #000','border-bottom':'1px solid #000'}); 
    }); 
}); 

Cela fonctionne exactement comme il se doit dans Firefox. Toutefois, dans Chrome, il fonctionne correctement pour les premières lignes, mais il commence à "laisser derrière" une partie de la couleur de bordure sur les lignes précédemment planifiées.

Je suis sur un Mac en utilisant Chrome 15.0.874.106. Voici un exemple de jsFiddle: http://jsfiddle.net/D6eKE/1/

Y a-t-il quelque chose que je puisse faire pour améliorer le fonctionnement de Chrome? Merci de votre aide!

+0

Très étrange. Semble être en quelque sorte lié à la frontière-effondrement. Si vous ne repliez pas les bordures, il n'y a pas le même problème: http://jsfiddle.net/D6eKE/3/ –

Répondre

3

On dirait que vous êtes assez proche, alors essayez d'ajouter le sélecteur ID:

$(function(){ 
    $("#tableid tr").hover(
     function(){ 
      $(this).addClass("highlight"); 
     }, 
     function(){ 
      $(this).removeClass("highlight"); 
     } 
    ); 
}); 

Vous pouvez également utiliser le plug-in columnHover:

$(document).ready(function(){ 
    $("#tableid").columnHover({ hoverClass: "highlight" }); 
}); 

Enfin, vous pouvez aussi y arriver avec quelques CSS simple:

#tableid tr:hover { 
    background-color: #f8f8f8; 
} 
+2

Je conseillerais la dernière route, et si jQuery utilise 'addClass' et' removeClass' puis utilisez css pour le style par opposition à '.css' – rickyduck

+1

Merci pour la suggestion à propos de' addClass' et 'removeClass'. Cela semble être une meilleure option. –

+0

Je pense que je vais aller avec 'addClass' et' removeClass'. Cela semble beaucoup plus facile que ce que j'essayais d'accomplir. Merci à vous deux pour votre aide. – Vecta

-1

Je crois que vous devez utiliser le .each() pour appliquer la fonction à tous les éléments retournés par le sélecteur jQuery $ ('tr'). Cela va itérer sur le tableau d'objets renvoyé par jQuery et appliquer l'action désirée à chacun d'entre eux, tr tag dans ce cas. Quelque chose comme

$(function(){ 
    $('tr').hover(function() { 
     $(this).css({'border-top':'4px solid #934739', 'border-bottom':'4px solid #934739'}); 
     }, 
     function() { 
      $(this).css({'border-top':'1px solid #000', 'border-bottom':'1px solid #000'}); 
     }); 
}); 
+0

Il n'y a pas besoin de chacun ici et le code affiché ne fonctionne pas du tout. L'un des points forts de jquery est que les choses s'appliquent à l'ensemble de la collection et n'ont pas besoin d'être itérées. –

+0

@Rynkadink: Non, vous n'avez pas besoin d'utiliser '.each()'. – Tadeck

+0

Merci pour l'indice, à propos de .each(). @James Montagne, en quittant le 'td' ça n'a pas marché. Merci pour le moins. Le code fonctionne pleinement maintenant. – Rynkadink

Questions connexes