0 / 0 / 0
Регистрация: 28.10.2018
Сообщений: 27

Закрытие меню при нажатии в любом месте (вне меню)

10.03.2023, 12:41. Показов 732. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья, всем привет!
Единственное место где можно рассчитывать на помощь!

Ситуация такова, появилась необходимость встроить на сайт меню с подкатегориями
Решили поставить такое:
https://s-sd.ru/files/mega-dro... dex.html#0
Исходники тут https://s-sd.ru/blog_studio_design/mega-menyu/

HTML
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
<div class="cd-dropdown-wrapper">
            <a class="cd-dropdown-trigger" href="#0">Dropdown</a>
            <nav class="cd-dropdown">
                <h2>Title</h2>
                <a href="#0" class="cd-close">Close</a>
                <ul class="cd-dropdown-content">
                    <li>
                        <form class="cd-search">
                            <input type="search" placeholder="Search...">
                        </form>
                    </li>
                    <li class="has-children">
                        <a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Clothing</a>
 
                        <ul class="cd-secondary-dropdown is-hidden">
                            <li class="go-back"><a href="#0">Menu</a></li>
                            <li class="see-all"><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">All Clothing</a></li>
                            <li class="has-children">
                                <a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Accessories</a>
 
                                <ul class="is-hidden">
                                    <li class="go-back"><a href="#0">Clothing</a></li>
                                    <li class="see-all"><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">All Accessories</a></li>
                                    <li class="has-children">
                                        <a href="#0">Beanies</a>
 
                                        <ul class="is-hidden">
                                            <li class="go-back"><a href="#0">Accessories</a></li>
                                            <li class="see-all"><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">All Benies</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Caps &amp; Hats</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Gifts</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Scarves &amp; Snoods</a></li>
                                        </ul>
                                    </li>
                                    <li class="has-children">
                                        <a href="#0">Caps &amp; Hats</a>
 
                                        <ul class="is-hidden">
                                            <li class="go-back"><a href="#0">Accessories</a></li>
                                            <li class="see-all"><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">All Caps &amp; Hats</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Beanies</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Caps</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Hats</a></li>
                                        </ul>
                                    </li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Glasses</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Gloves</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Jewellery</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Scarves</a></li>
                                </ul>
                            </li>
 
                            <li class="has-children">
                                <a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Bottoms</a>
 
                                <ul class="is-hidden">
                                    <li class="go-back"><a href="#0">Clothing</a></li>
                                    <li class="see-all"><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">All Bottoms</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Casual Trousers</a></li>
                                    <li class="has-children">
                                        <a href="#0">Jeans</a>
 
                                        <ul class="is-hidden">
                                            <li class="go-back"><a href="#0">Bottoms</a></li>
                                            <li class="see-all"><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">All Jeans</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Ripped</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Skinny</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Slim</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Straight</a></li>
                                        </ul>
                                    </li>
                                    <li><a href="#0">Leggings</a></li>
                                    <li><a href="#0">Shorts</a></li>
                                </ul>
                            </li>
 
                            <li class="has-children">
                                <a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Jackets</a>
 
                                <ul class="is-hidden">
                                    <li class="go-back"><a href="#0">Clothing</a></li>
                                    <li class="see-all"><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">All Jackets</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Blazers</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Bomber jackets</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Denim Jackets</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Duffle Coats</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Leather Jackets</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Parkas</a></li>
                                </ul>
                            </li>
 
                            <li class="has-children">
                                <a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Tops</a>
 
                                <ul class="is-hidden">
                                    <li class="go-back"><a href="#0">Clothing</a></li>
                                    <li class="see-all"><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">All Tops</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Cardigans</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Coats</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Polo Shirts</a></li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Shirts</a></li>
                                    <li class="has-children">
                                        <a href="#0">T-Shirts</a>
 
                                        <ul class="is-hidden">
                                            <li class="go-back"><a href="#0">Tops</a></li>
                                            <li class="see-all"><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">All T-shirts</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Plain</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Print</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Striped</a></li>
                                            <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Long sleeved</a></li>
                                        </ul>
                                    </li>
                                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Vests</a></li>
                                </ul>
                            </li>
                        </ul> <!-- .cd-secondary-dropdown -->
                    </li> <!-- .has-children -->
 
                    <li class="has-children">
                        <a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Gallery</a>
 
                        <ul class="cd-dropdown-gallery is-hidden">
                            <li class="go-back"><a href="#0">Menu</a></li>
                            <li class="see-all"><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Browse Gallery</a></li>
                            <li>
                                <a class="cd-dropdown-item" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <img src="img/img.png" alt="Product Image">
                                    <h3>Product #1</h3>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <img src="img/img.png" alt="Product Image">
                                    <h3>Product #2</h3>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <img src="img/img.png" alt="Product Image">
                                    <h3>Product #3</h3>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <img src="img/img.png" alt="Product Image">
                                    <h3>Product #4</h3>
                                </a>
                            </li>
                        </ul> <!-- .cd-dropdown-gallery -->
                    </li> <!-- .has-children -->
 
                    <li class="has-children">
                        <a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Services</a>
                        <ul class="cd-dropdown-icons is-hidden">
                            <li class="go-back"><a href="#0">Menu</a></li>
                            <li class="see-all"><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Browse Services</a></li>
                            <li>
                                <a class="cd-dropdown-item item-1" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #1</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item item-2" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #2</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item item-3" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #3</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item item-4" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #4</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item item-5" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #5</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item item-6" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #6</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item item-7" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #7</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item item-8" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #8</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item item-9" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #9</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item item-10" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #10</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item item-11" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #11</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                            <li>
                                <a class="cd-dropdown-item item-12" href="https://s-sd.ru/blog_studio_design/mega-menyu/">
                                    <h3>Service #12</h3>
                                    <p>This is the item description</p>
                                </a>
                            </li>
 
                        </ul> <!-- .cd-dropdown-icons -->
                    </li> <!-- .has-children -->
 
                    <li class="cd-divider">Divider</li>
 
                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Page 1</a></li>
                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Page 2</a></li>
                    <li><a href="https://s-sd.ru/blog_studio_design/mega-menyu/">Page 3</a></li>
                </ul> <!-- .cd-dropdown-content -->
            </nav> <!-- .cd-dropdown -->
        </div> <!-- .cd-dropdown-wrapper -->
MAIN.JS

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
jQuery(document).ready(function($){
    //open/close mega-navigation
    $('.cd-dropdown-trigger').on('click', function(event){
        event.preventDefault();
        toggleNav();
    });
 
    //close meganavigation
    $('.cd-dropdown .cd-close').on('click', function(event){
        event.preventDefault();
        toggleNav();
    });
 
    //on mobile - open submenu
    $('.has-children').children('a').on('click', function(event){
        //prevent default clicking on direct children of .has-children 
        event.preventDefault();
        var selected = $(this);
        selected.next('ul').removeClass('is-hidden').end().parent('.has-children').parent('ul').addClass('move-out');
    });
 
    //on desktop - differentiate between a user trying to hover over a dropdown item vs trying to navigate into a submenu's contents
    var submenuDirection = ( !$('.cd-dropdown-wrapper').hasClass('open-to-left') ) ? 'right' : 'left';
    $('.cd-dropdown-content').menuAim({
        activate: function(row) {
            $(row).children().addClass('is-active').removeClass('fade-out');
            if( $('.cd-dropdown-content .fade-in').length == 0 ) $(row).children('ul').addClass('fade-in');
        },
        deactivate: function(row) {
            $(row).children().removeClass('is-active');
            if( $('li.has-children:hover').length == 0 || $('li.has-children:hover').is($(row)) ) {
                $('.cd-dropdown-content').find('.fade-in').removeClass('fade-in');
                $(row).children('ul').addClass('fade-out')
            }
        },
        exitMenu: function() {
            $('.cd-dropdown-content').find('.is-active').removeClass('is-active');
            return true;
        },
        submenuDirection: submenuDirection,
    });
 
    //submenu items - go back link
    $('.go-back').on('click', function(){
        var selected = $(this),
            visibleNav = $(this).parent('ul').parent('.has-children').parent('ul');
        selected.parent('ul').addClass('is-hidden').parent('.has-children').parent('ul').removeClass('move-out');
    }); 
 
    function toggleNav(){
        var navIsVisible = ( !$('.cd-dropdown').hasClass('dropdown-is-active') ) ? true : false;
        $('.cd-dropdown').toggleClass('dropdown-is-active', navIsVisible);
        $('.cd-dropdown-trigger').toggleClass('dropdown-is-active', navIsVisible);
        if( !navIsVisible ) {
            $('.cd-dropdown').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',function(){
                $('.has-children ul').addClass('is-hidden');
                $('.move-out').removeClass('move-out');
                $('.is-active').removeClass('is-active');
            }); 
        }
    }
 
    //IE9 placeholder fallback
    //credits http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html
    if(!Modernizr.input.placeholder){
        $('[placeholder]').focus(function() {
            var input = $(this);
            if (input.val() == input.attr('placeholder')) {
                input.val('');
            }
        }).blur(function() {
            var input = $(this);
            if (input.val() == '' || input.val() == input.attr('placeholder')) {
                input.val(input.attr('placeholder'));
            }
        }).blur();
        $('[placeholder]').parents('form').submit(function() {
            $(this).find('[placeholder]').each(function() {
                var input = $(this);
                if (input.val() == input.attr('placeholder')) {
                    input.val('');
                }
            })
        });
    }
});

Демо тут https://s-sd.ru/files/mega-dro... index.html

Вообщем проблема такова, когда открыто меню, оно закрывается только по кнопке. Хотелось бы сделать, что при нажатии в любом месте вне меню, оно закрывалось бы. Но что бы я не пробовал, ничего не получается

Заранее спасибо всем
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2023, 12:41
Ответы с готовыми решениями:

Работа с меню. При клике на кнопке меню или вне его, меню должно закрываться
Добрый вечер! Изучаю JQuery. Вот ради развития решил написать меню, практически такое же как на Хабре. Два дня ломаю голову над тем, как...

Закрытие моб меню при нажатии на любое место экрана
Добрый день, подскажите пожалуйста, имеется меню, которое в мобильной версии закрывается при нажатии на саму вкладку меню (блок toggleMenu)...

Закрытие блока при клике в любом месте
Приветствую! Не подскажете как новичку решить проблему? Есть блок: &lt;div id=&quot;btopen&quot;&gt; &lt;a...

3
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3844 / 1703 / 431
Регистрация: 14.03.2022
Сообщений: 4,350
10.03.2023, 12:51
Цитата Сообщение от vmiche Посмотреть сообщение
Но что бы я не пробовал, ничего не получается
При открытии "меню" - вешай обработчик click на весь документ...
Проверяй "на меню ли кликнули", если нет - удаляй обработчик и закрывай меню.
1
0 / 0 / 0
Регистрация: 28.10.2018
Сообщений: 27
10.03.2023, 20:32  [ТС]
Я такое и понял из гугла)
Но учитывая мои скудные знания js, или может вообще их отсутствие, я пришел сюда

Что бы меня носом ткнули куда и что дописать))

Пожалуйста)
0
 Аватар для sash
89 / 87 / 49
Регистрация: 09.10.2014
Сообщений: 571
11.03.2023, 18:54
Лучший ответ Сообщение было отмечено vmiche как решение

Решение

Добавлено через 7 минут
Там ещё нужно переменную устанавливать в значение 1 чтоб понятно было что элемент открыт

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var show = 0
 
    $("кнопка открытия").bind("click touchstart", function()
      {
        $("elem").shoe{)
        setTimeout(function()
          {
            show = 1
          },111)
      })
 
 
    // скрытие по клику вне элемента
    $(document).bind('click toucstart', function(e)
      {
        if (!$(e.target).closest("elem").length && show)
        {
          $("elem").hide()
          show = 0
        }
      })
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2023, 18:54
Помогаю со студенческими работами здесь

Закрыть мега меню при положении мыши вне блока меню
Добрый день ребята! Казалось-бы тривиальная задача, но решить самостоятельно я ее не могу. Есть блок мега меню например: &lt;ul...

Как реализовать закрытие меню при выборе пункта меню?
Здравствуйте! Как сделать так, чтобы мобильное меню закрывалось при выборе пункта меню? Код прилагаю ниже: ...

Как разместить главное меню (MainMenu) в любом месте формы
Не могу разобраться с проблемой: на форме присутствует панель со свойством Align = alTop (она заменяет стандартный заголовок окна) ...

Закрытие выпадающего меню по клику вне
Написал небольшой скрипт, который открывает выпадающее меню. Но закрытие меню происходит только если нажать снова на пункт меню, а мне бы...

При нажатии в любом месте в браузере открывается реклама
Через некоторое кол-во времени при нажатии на свободное место в браузере Chrome открывается новая вкладка с рекламой типа леона и вулкана.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru