Оптимизация кода (создание горизонтального меню)
Доброе время суток! Очень понравилось горизонтальное меню сайта http://worldoftanks.ru/ , особенно наличие списков завязанных с одним из пунктов меню (работают в паре).
Собственно вся проблема в поиске двух кнопок работающих в паре (пункта меню + соответсвующего ему списка) Ну, например, необходимо обработать событие active при нажатии на одну из кнопок. Таким образом, при клике на один из элементов (списка или пункта меню), - загораются оба. При этом, предыдущий (активный) пункт меню (возможно пункт меню+список) нужно погасить. Сделал свою реализацию, все работает, но код чет громоздко выглядит, можно ли как-нибудь упростить? Весь код приводить не буду (если нужно выложу), хотелось бы сначала разобрать по пунктам: 1 Есть переменная которая содержит все пункты меню
var li_tabs=$('#horisontal-tabs li');
1.1 Произвожу поиск активных элементов (чтобы потом их погасить). Т.е. если есть список, то и список, и пункт меню будут активны (на сайте там сложнее, ну для начала пусть будет так).
var active_old_tabs = $(li_tabs).filter(".active");
1.2 Определение начальной позиции старых активных кнопок (можно ли короче получить индекс первой активной кнопки?)
var start_for_old=$(li_tabs).filter(".active").first().prevAll('li').length; //Определение начальной позиции старых кнопок
1.3 Определение конечной позиции (т.е +1 или +2) в зависимости есть список или нет var stop_for_old=(start_for_old + active_old_tabs.length); 1.4 Изминения стиля старых активных кнопок
//Изменение стилевого оформеления старых кнопок----
for(var j=start_for_old; j<stop_for_old; j++){
$(li_tabs[j]).css('background-position',li_bg_index[j] + "px 0px");
};
Вообщем в заключении, что хотел... 1 Возможно ли получить сравнительно проще индексы активных элементов (п.п. 2..3) относительно элементов которые содержит переменная li_tabs (п.1)? 2 Для активации обеих кнопок (если есть еще список) необходимо производить доп. поиск меню или списка (в зависимости от того на что было нажато). Реализовал поиск по id следующим образом:
var active_new_tabs = $(this).add($(this).siblings("#" + $(this).attr('id')));
Варианты проще существуют? |
| Часовой пояс GMT +3, время: 05:29. |