Немного общее решение:
Скажем, я хочу иметь простой способ сделать таблицы с рядами, которые выдвигают на первый план, когда я поставил указатель мыши над ними. В идеальном мире это было бы очень легко, только с одним простым правилом CSS:
tr:hover { background: red; }
К сожалению, более старые версии IE не поддерживают селектор: парить на других, чем A. элементов Таким образом, мы должны использовать JavaScript.
В этом случае я определяю класс таблицы «highlightable», чтобы отмечать таблицы, которые должны иметь парирующие строки. Я сделаю переключение фона, добавив и удалив класс «выделить» в строке таблицы.
CSS
table.highlightable tr.highlight { background: red; }
JavaScript (с помощью прототипа)
// 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
Все, что вам нужно сделать сейчас, чтобы добавить класс "highlightable" любому таблицу, которую вы хотите:
<table class="highlightable">
...
</table>
Очень круто. Я не знал, что вы можете делать такие вещи, как $$ ('# mytable tr'). Это делает мою жизнь намного легче. – 2008-09-09 16:09:20
Код @swilliams лучше моего примера, но я думаю, вы должны использовать addClassName(), а не явно задавать стиль в JS. – pix0r 2008-09-09 16:11:58
@Mark Biek, есть куча помощников, таких как $ F и $ A. См. Служебную страницу: http://www.prototypejs.org/api/utility и Перечислимые объекты очень мощные: http://www.prototypejs.org/api/enumerable – swilliams 2008-09-09 16:14:55