X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Не пойму элементарного в JS
andreykashops
andreykashops
Topic Starter сообщение 26.7.2014, 16:01; Ответить: andreykashops
Сообщение #1


Приветствую!

Есть такой код:
Код
        // Скрываем все пункты меню 2 уровня
        $('#fix-cont ul ul').fadeOut(1);
        
        //Функция-обраотчик нажатия
        function cust_menu(this_){
            //Проверяем, активен ли пункт
            if($(this_).hasClass('hover')){
                return false;
            }
            // Есть ли подпункты
            if($('ul', this_).length !== 0){
                $('#fix-cont ul ul').not($(this_).parents('ul')).fadeOut(1);
                $('ul', this_).not($('ul', this_).find('ul')).fadeIn(300);
                $('#fix-cont li').not($(this_).parents('li')).removeClass('hover');
                $(this_).addClass('hover');
            }
        }
        // По нажатию на пункт запускаем обработчик
        $('#fix-cont li').click(function(){
            cust_menu($(this));
            return false;
        });
        //Обработчик нажатия вне области
        $(document).click(function(e) {
            // Если в области - ничего не выполняем
            if ($(e.target).closest("#fix-cont").length) return;
            // Убераем класс активных пунктов
            $('#fix-cont li').removeClass('hover');
            // Устанавливаем дефолтовый пункт(открываем)(!!!)
            cust_menu('.cat-item-4');
            e.stopPropagation();
        });
        // Устанавливаем дефолтовый пункт(открываем)
        cust_menu('.cat-item-4');


Получается если мы нажали вне меню - нужно закрыть все и открыть дефолтовое, так вот момент обозначенный восклицательными знаками не работает.
Идем дальше, ищем причину: оказывается строка в обработчике if($(this_).hasClass('hover')){ возвращает true(якобы класс есть у поста), но на самом деле его там нет, в чем причина?



Сообщение отредактировал jansen - 28.7.2014, 14:00
Причина редактирования: по просьбе ТС.


--------------------


Поблагодарили: (1)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
aitatarinov
aitatarinov
сообщение 26.7.2014, 19:17; Ответить: aitatarinov
Сообщение #2


Попробуй это все обернуть не в функцию
а внутри jquery
Цитата
$("#id_element").on("click",function(){
//код обработки
})
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
andreykashops
andreykashops
Topic Starter сообщение 28.7.2014, 13:58; Ответить: andreykashops
Сообщение #3


aitatarinov, не вариант, т. к. потом зацыкливается событие click.

Проблему решил, спасибо.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Не пойму что за шаблон, его лицензия
14 nidise 7386 13.11.2009, 6:44
автор: -Licoric-


 



RSS Текстовая версия Сейчас: 29.3.2024, 9:01
Дизайн