Javascipt не работает простейший dropdown.

avatar Exorkjee

377

19

Exorkjee

Пользователь

Регистрация: 24.12.2012

Сообщения: 135

Рейтинг: 24

Exorkjee

Регистрация: 24.12.2012

Сообщения: 135

Рейтинг: 24

У есть dropdown menu, при нажатии на один элемент, он открывается, если нажимаю на другой, то тот который был открыт закрывается, открывается новый, но появилась проблема, что если я хочу закрыть уже открытый dropdown item, то ничего не происходит. Вот код:



header.find('.toggle-section-contact').on('click', function(){

$('.section-contact-wrapper').removeClass('active');

$(this).closest('.section-contact-wrapper').addClass('active'); });

Надеюсь на вашу помощь justsmile.png?1553740538

Laurarouge

Пользователь

Регистрация: 11.12.2016

Сообщения: 1608

Рейтинг: 816

Laurarouge

Регистрация: 11.12.2016

Сообщения: 1608

Рейтинг: 816

А можно весь код на codepen.io? html/css

Exorkjee

Пользователь

Регистрация: 24.12.2012

Сообщения: 135

Рейтинг: 24

Exorkjee

Регистрация: 24.12.2012

Сообщения: 135

Рейтинг: 24

Laurarouge сказал(а):

А можно весь код на codepen.io? html/css

Нажмите, чтобы раскрыть...


уж больно много всего надо будет пихать (( можешь просто подсказать идею, как можно её реализовать.

:DLOL:D

Пользователь

Регистрация: 19.08.2015

Сообщения: 284

Рейтинг: 134

:DLOL:D

Регистрация: 19.08.2015

Сообщения: 284

Рейтинг: 134

а че ты mouseenter mouseleave не сделаешь?


Middle.Only_xD

Пользователь

Регистрация: 27.10.2016

Сообщения: 1126

Рейтинг: 404

Middle.Only_xD

Регистрация: 27.10.2016

Сообщения: 1126

Рейтинг: 404

img

ты юзаешь jquery, там есть более простой способ добавления\удаления класса - toggleClass('твой класс') убери везде свои remove и add и поставь этот метод, и не юзай closest, там тоже поставь обработчик onClick

Exorkjee

Пользователь

Регистрация: 24.12.2012

Сообщения: 135

Рейтинг: 24

Exorkjee

Регистрация: 24.12.2012

Сообщения: 135

Рейтинг: 24

Middle.Only_xD сказал(а):

ты юзаешь jquery, там есть более простой способ добавления\удаления класса - toggleClass('твой класс') убери везде свои remove и add и поставь этот метод, и не юзай closest, там тоже поставь обработчик onClick

Нажмите, чтобы раскрыть...

Проблема в том, я работаю с готовым проектом, и там js фаил написан в одну строку, господи, я ничего там изменить не могу. Если не сложно, примерно кодом напиши, я если что поправлю если будут какие-то проблемы.

:DLOL:D

Пользователь

Регистрация: 19.08.2015

Сообщения: 284

Рейтинг: 134

:DLOL:D

Регистрация: 19.08.2015

Сообщения: 284

Рейтинг: 134

Попробуй

header.find('.toggle-section-contact').on('click', function(){

$('.section-contact-wrapper').toggleClass('active');


$(this).siblings('.section-contact-wrapper').removeClass('active'); });

Exorkjee

Пользователь

Регистрация: 24.12.2012

Сообщения: 135

Рейтинг: 24

Exorkjee

Регистрация: 24.12.2012

Сообщения: 135

Рейтинг: 24

:DLOL:D сказал(а):

Попробуй

header.find('.toggle-section-contact').on('click', function(){

$('.section-contact-wrapper').toggleClass('active');


$(this).siblings('.section-contact-wrapper').toggleClass('active'); });

Нажмите, чтобы раскрыть...

спасибо за помощь, уже разобрался justsmile.png?1553740538

Podpivasik

Пользователь

Регистрация: 14.07.2018

Сообщения: 30010

Рейтинг: 11117

Podpivasik

Регистрация: 14.07.2018

Сообщения: 30010

Рейтинг: 11117

Exorkjee сказал(а):

$('.section-contact-wrapper').removeClass('active');

$(this).closest('.section-contact-wrapper').addClass('active'); });

Нажмите, чтобы раскрыть...

каво

ты удалил класс а потом добавил класс туда же.

а где логика.

это что за гений программист писал?

pixelgoo

Пользователь

Регистрация: 18.07.2013

Сообщения: 6806

Рейтинг: 3313

pixelgoo

Регистрация: 18.07.2013

Сообщения: 6806

Рейтинг: 3313

Exorkjee сказал(а):

У есть dropdown menu, при нажатии на один элемент, он открывается, если нажимаю на другой, то тот который был открыт закрывается, открывается новый, но появилась проблема, что если я хочу закрыть уже открытый dropdown item, то ничего не происходит. Вот код:



header.find('.toggle-section-contact').on('click', function(){

$('.section-contact-wrapper').removeClass('active');

$(this).closest('.section-contact-wrapper').addClass('active'); });

Надеюсь на вашу помощь justsmile.png?1553740538

Нажмите, чтобы раскрыть...

Ты используешь jQuery, а не чистый JS. Мой тебе совет, забей на это. В 2019 пишут либо на чистом JS'e, либо на Реакте/Вью.

Podpivasik

Пользователь

Регистрация: 14.07.2018

Сообщения: 30010

Рейтинг: 11117

Podpivasik

Регистрация: 14.07.2018

Сообщения: 30010

Рейтинг: 11117

pixelgoo сказал(а):

Ты используешь jQuery, а не чистый JS. Мой тебе совет, забей на это. В 2019 пишут либо на чистом JS'e, либо на Реакте/Вью.

Нажмите, чтобы раскрыть...

может он вордпрессер, там только jq

:DLOL:D

Пользователь

Регистрация: 19.08.2015

Сообщения: 284

Рейтинг: 134

:DLOL:D

Регистрация: 19.08.2015

Сообщения: 284

Рейтинг: 134

pixelgoo сказал(а):

Ты используешь jQuery, а не чистый JS. Мой тебе совет, забей на это. В 2019 пишут либо на чистом JS'e, либо на Реакте/Вью.

Нажмите, чтобы раскрыть...

А на tsе?Pepega.png?1543957140

pixelgoo

Пользователь

Регистрация: 18.07.2013

Сообщения: 6806

Рейтинг: 3313

pixelgoo

Регистрация: 18.07.2013

Сообщения: 6806

Рейтинг: 3313

Podpivasik сказал(а):

может он вордпрессер, там только jq

Нажмите, чтобы раскрыть...

Я работал с Вордпрессом в том числе, сейчас не пишут на голом Вордпрессе, а юзают разные тулзы + просто отключаешь

Цитата:
if ( !is_admin() ) wp_deregister_script('jquery');
Нажмите, чтобы раскрыть...

jQuery занимает кучу килобайт и сам по себе тормозит на странице, при этом 95% его функцонала и больше уже есть в чистом JS. Нет смысла его юзать.


:DLOL:D сказал(а):

А на tsе?Pepega.png?1543957140

Нажмите, чтобы раскрыть...

И на нем тоже в серьезных проектах.

:DLOL:D

Пользователь

Регистрация: 19.08.2015

Сообщения: 284

Рейтинг: 134

:DLOL:D

Регистрация: 19.08.2015

Сообщения: 284

Рейтинг: 134

pixelgoo сказал(а):

Я работал с Вордпрессом в том числе, сейчас не пишут на голом Вордпрессе, а юзают разные тулзы + просто отключаешь

jQuery занимает кучу килобайт и сам по себе тормозит на странице, при этом 95% его функцонала и больше уже есть в чистом JS. Нет смысла его юзать.


И на нем тоже в серьезных проектах.

Нажмите, чтобы раскрыть...

спасибо что не забыли насFeelsRainMan.gif?1559910521PepeDisco.gif?1552138340

Podpivasik

Пользователь

Регистрация: 14.07.2018

Сообщения: 30010

Рейтинг: 11117

Podpivasik

Регистрация: 14.07.2018

Сообщения: 30010

Рейтинг: 11117

pixelgoo сказал(а):

jQuery занимает кучу килобайт и сам по себе тормозит на странице, при этом 95% его функцонала и больше уже есть в чистом JS. Нет смысла его юзать.

Нажмите, чтобы раскрыть...

ето что за пенек надо иметь чтоб он тормозил?

минифицированная версия весит меньше 100 кб

pixelgoo

Пользователь

Регистрация: 18.07.2013

Сообщения: 6806

Рейтинг: 3313

pixelgoo

Регистрация: 18.07.2013

Сообщения: 6806

Рейтинг: 3313

Podpivasik сказал(а):

ето что за пенек надо иметь чтоб он тормозил?

минифицированная версия весит меньше 100 кб

Нажмите, чтобы раскрыть...

70 КБ это непозволительная роскошь для библиотеки, которую можно заменить чистым JS'ом.

И дело не в пеньке, он тормозит даже в современных браузерах, он очень медленно работает с DOM'ом. У меня буквально полгода назад был опыт переписывания функционала одной сложной формы с jQuery на Vue, поверь мне.

Podpivasik

Пользователь

Регистрация: 14.07.2018

Сообщения: 30010

Рейтинг: 11117

Podpivasik

Регистрация: 14.07.2018

Сообщения: 30010

Рейтинг: 11117

pixelgoo сказал(а):

70 КБ это непозволительная роскошь для библиотеки, которую можно заменить чистым JS'ом.

И дело не в пеньке, он тормозит даже в современных браузерах, он очень медленно работает с DOM'ом. У меня буквально полгода назад был опыт переписывания функционала одной сложной формы с jQuery на Vue, поверь мне.

Нажмите, чтобы раскрыть...

никогда не замечал чтоб что то лагало в браузере.

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

да так что тупо вкладка падает.

pixelgoo

Пользователь

Регистрация: 18.07.2013

Сообщения: 6806

Рейтинг: 3313

pixelgoo

Регистрация: 18.07.2013

Сообщения: 6806

Рейтинг: 3313

Podpivasik сказал(а):

никогда не замечал чтоб что то лагало в браузере.

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

да так что тупо вкладка падает.

Нажмите, чтобы раскрыть...

Ну то что вкладка падает то уже криворукие фронт-эндщики, а не ангуляр.

Podpivasik

Пользователь

Регистрация: 14.07.2018

Сообщения: 30010

Рейтинг: 11117

Podpivasik

Регистрация: 14.07.2018

Сообщения: 30010

Рейтинг: 11117

pixelgoo сказал(а):

Ну то что вкладка падает то уже криворукие фронт-эндщики, а не ангуляр.

Нажмите, чтобы раскрыть...

ну и на jq можно написать так что ничего тормозить не будет.

по крайней мере я не вижу смысла писать на фреймворках дефолтный сайт.

а чистый js помойка, никогда его не любил.

panicPlayer

Пользователь

Регистрация: 15.07.2019

Сообщения: 537

Рейтинг: -25

Нарушения: 1000

panicPlayer

Регистрация: 15.07.2019

Сообщения: 537

Рейтинг: -25

Нарушения: 1000

даже я худший джсник не юзай джквери уже