Ваше решение не масштабируется.
Вы назначаете обработчики событий для каждого элемента в dom.
Это одна из проблем, которые у меня есть с jQuery. Это очень легко сделать неправильно и выстрелить себе в ногу по пути.
Что вам нужно, это делегирование событий.
По сути, концепция заключается в том, что у вас есть обработчик событий намного выше в дереве доменов, который слушает события, которые всплывают. Таким образом, вы можете обрабатывать события мыши в списке, но не в самих элементах списка, а в документе, в одном обработчике событий.
Взгляните на http://api.jquery.com/on/
Ваш код должен выглядеть примерно так:
$('body').on('mouseenter', '#buttons img', function (e) {
$('#a' + $(this).attr('id').slice(-1)).fadeIn(300);
});
$('body').on('mouseleave', '#buttons img', function (e) {
$('#a' + $(this).attr('id').slice(-1)).fadeOut(300);
});
Обратите внимание, что на самом деле я использую только идентификатор, чтобы получить ссылку между кнопками и стрелками. Вы можете пропустить все идентификаторы и просто узнать, какой индекс у элемента в его родительском элементе.
Рабочий пример можно найти здесь: http://jsfiddle.net/GNs44/1/