Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выпадающее меню (https://javascript.ru/forum/misc/70056-vypadayushhee-menyu.html)

GTRka 07.08.2017 13:54

Выпадающее меню
 
Доброго времени суток тем кто читает это.
Проблема следующая, не выпадает список при нажатии на кнопку,
вот html:
<div id="dd" class="wrapper-dropdown" tabindex="1">AAA
     <ul class="dropdown">
        <li><a href="#"><i class=""></i>123</a></li>
        <li><a href="#"><i class=""></i>123</a></li>
        <li><a href="#"><i class=""></i>123</a></li>
        <li><a href="#"><i class=""></i>123</a></li>
        <li><a href="#"><i class=""></i>...</a></li>
    </ul>
</div>

а вот код Javascrip:
obj.dd.on('click', function(event){
        $(this).toggleClass('active');
        return false;
    });
    
    function DropDown(el) {
        this.dd = el;
        this.initEvents();
    }
    DropDown.prototype = {
        initEvents : function() {
            var obj = this;
            
            obj.dd.on('click', function(event){
                $(this).toggleClass('active');
                event.stopPropagation();
            }); 
        }
    }
    
    $(function() {
        
        var dd = new DropDown( $('#dd') );
        
        $(document).click(function() {
            $('.wrapper-dropdown').removeClass('active');
        });
        
    });

Nexus 07.08.2017 14:20

GTRka, строки 1-4 - "не пришей к п... рукав", т.е. непонятно зачем и почему они там.
Если до строки 1 переменная «obj» является экземпляром "класса" DropDown, то менюшка моментально разворачивается и сворачивается обратно.
Если переменная undefined, то смотрите консоль, там вас об этом браузер уведомит. В этом случае у вас код вообще работать не будет.

GTRka 07.08.2017 15:49

Nexus,
Спасибо за ответ!)
Но ничего не выходит(((
я немного изменил код на:
$(function() {

    var dd = new DropDown( $('#dd') );
 
    $(document).click(function() {
        $('.wrapper-dropdown').removeClass('active');
    });
	function DropDown(el) {
    this.dd = el;
    this.initEvents();
}
DropDown.prototype = {
    initEvents : function() {
        var obj = this;
 
        obj.dd.on('click', function(event){
            $(this).toggleClass('active');
            event.stopPropagation();
        }); 
    }
}

});

Не ошибок в консоли, ничего... Помогите плиз)
Я новичок в этом(
В консоли при нажатии на кнопки появляется wrapper-dropdown active , но списка нету((

Nexus 07.08.2017 16:00

GTRka, в консоли как минимум должно быть уведомление, о том, что в строке 10 вызывается не объявленный метод.
Вы вызываете метод "класса" до того, как внести его в прототип.

Строку 3 перенесите на строку 22.

GTRka 07.08.2017 16:08

Nexus,Спасибо большое!)))
У меня немного в другом еще ошибка была, вот и ничего не получалось

GTRka 07.08.2017 17:30

Nexus,
Еще 1 вопрос, а как сделать так что бы при выпадении списка затемнялся задний фон?)

Nexus 07.08.2017 18:51

GTRka, добавить на страницу полупрозрачный слой поверх всего контента, который будет появляться, когда меню открыто.
Само меню придется заставить появляться поверх этого полупрозрачного слоя (position + z-index).
Вообще это лишний, никому не нужный геморой.


Часовой пояс GMT +3, время: 16:03.