Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.01.2012, 05:07
Аспирант
Отправить личное сообщение для IONEX Посмотреть профиль Найти все сообщения от IONEX
 
Регистрация: 08.01.2012
Сообщений: 32

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


Варианты проще существуют?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36
Создание меню подскажите KonstantinK jQuery 2 11.04.2011 19:33
Оптимизация кода Prizrak177 Общие вопросы Javascript 0 15.02.2011 16:36
Создание меню ozs (X)HTML/CSS 21 25.11.2010 22:32
Оптимизация кода. Правила хорошего тона при написании скриптов [ANTI]CheateR jQuery 1 18.09.2010 08:41