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



 

Здравствуйте, гость ( Вход | Регистрация )

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


WordPress is my Life..
******

Группа: Active User
Сообщений: 1427
Регистрация: 21.7.2012
Из: Украины
Поблагодарили: 633 раза
Репутация:   139  


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

Есть такой код:
Код
        // Скрываем все пункты меню 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


Новичок
*

Группа: Viewer
Сообщений: 8
Регистрация: 22.7.2014
Поблагодарили: 1 раз
Репутация:   1  


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


WordPress is my Life..
******

Группа: Active User
Сообщений: 1427
Регистрация: 21.7.2012
Из: Украины
Поблагодарили: 633 раза
Репутация:   139  


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

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


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


 



RSS Текстовая версия Сейчас: 17.12.2017, 21:50
Дизайн