Un poco poco de solución genérica:
Digamos que yo quiero tener una forma sencilla de hacer tablas con filas que pondrá de relieve cuando pongo puntero del ratón sobre ellos. En este mundo ideal, sería muy fácil, con sólo una regla CSS simple:
tr:hover { background: red; }
Desafortunadamente, versiones antiguas de IE no soportan: Selector de vuelo estacionario en elementos distintos de A. Así que tenemos que utilizar JavaScript.
En ese caso, voy a definir una clase de tabla "highlightable" para marcar las tablas que deben tener filas hoverable. Haré el cambio de fondo agregando y quitando la clase "resaltar" en la fila de la tabla.
CSS
table.highlightable tr.highlight { background: red; }
JavaScript (usando Prototype)
// when document loads
document.observe('dom:loaded', function() {
// find all rows in highlightable table
$$('table.highlightable tr').each(function(row) {
// add/remove class "highlight" when mouse enters/leaves
row.observe('mouseover', function(evt) { evt.element().addClassName('highlight') });
row.observe('mouseout', function(evt) { evt.element().removeClassName('highlight') });
});
})
HTML
Todo lo que tiene que hacer ahora es añadir la clase "highlightable" a cualquiera tabla que desea:
<table class="highlightable">
...
</table>
Muy bueno. No sabía que podrías hacer cosas como $$ ('# mytable tr'). Eso hace que mi vida sea mucho más fácil. –
El código @swilliams es más bonito que mi ejemplo, pero creo que debería usar addClassName() en lugar de establecer explícitamente el estilo en el JS. – pix0r
@Mark Biek, hay muchos tipos de ayudantes como $ F y $ A. Consulte la página de utilidades: http://www.prototypejs.org/api/utility y los objetos Enumerable son muy potentes: http://www.prototypejs.org/api/enumerable – swilliams