Оптимизация кода (создание горизонтального меню)
Доброе время суток! Очень понравилось горизонтальное меню сайта 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, время: 13:57. |