Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2021, 08:47   #1
Роман000
 
Регистрация: 14.03.2021
Сообщений: 6
Стрелка Проблема класс active js

Всем привет, кто поможет решить такую задачку, надеюсь не сложная. Сам я пока не в состоянии

Есть такой код, он подсвечивает кнопки классом active. В строчке == стоит проверка на длину строки. Проблема в том, что не работают класс актив на дочерних ссылках. то бишь пример: site.ru/category/category2/page/6/ (по таким ссылкам скрипт актив не работает)
Вкратце нужно чтобы класс актив включался только только в случаях равных длине строки и больше этой строки. Но не меньше.

Код:
	(function($){
var $curURL = window.location.pathname;
$('.category-sidebar__item').each(function() {
	var $linkHref = $(this).find('a').attr('href');
	if ($curURL.indexOf($linkHref) > -1 && $curURL.length == $linkHref.length) {
		$(this).addClass('active');
	}
});

})(jQuery);
Роман000 вне форума Ответить с цитированием
Старый 15.03.2021, 08:25   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

ну наверное так и задать условие - больше или равно
Код:
if ($curURL.indexOf($linkHref) > -1 && $curURL.length >= $linkHref.length)
ADSoft вне форума Ответить с цитированием
Старый 15.03.2021, 09:32   #3
Роман000
 
Регистрация: 14.03.2021
Сообщений: 6
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
ну наверное так и задать условие - больше или равно
Код:
if ($curURL.indexOf($linkHref) > -1 && $curURL.length >= $linkHref.length)
Пробовал и так, но при этом варианте почему то родительские и дочерние ссылки становятся активными

Последний раз редактировалось Роман000; 15.03.2021 в 09:35.
Роман000 вне форума Ответить с цитированием
Старый 15.03.2021, 11:14   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

четко скажите какая цель то у вас?
например: добавлять всем элементам a внутри класса .category-sidebar__item класс active, если длина ссылки больше или равна <чему>?

$curURL зачем? проверяете что ссылка внутренняя, с этого сайта, с этой страницы?
ADSoft вне форума Ответить с цитированием
Старый 15.03.2021, 18:47   #5
Роман000
 
Регистрация: 14.03.2021
Сообщений: 6
По умолчанию

Роман000,
Цитата:
Сообщение от Роман000 Посмотреть сообщение
if ($curURL.indexOf($linkHref) > -1 && $curURL.length >= $linkHref.length)
Цитата:
Сообщение от ADSoft Посмотреть сообщение
четко скажите какая цель то у вас?
например: добавлять всем элементам a внутри класса .category-sidebar__item класс active, если длина ссылки больше или равна <чему>?

$curURL зачем? проверяете что ссылка внутренняя, с этого сайта, с этой страницы?
Добавлять ко всем элементам a внутри класса .category-sidebar__item класс active, если длина ссылки совпадает с url адресом страницы и + должна работать на всех дочерних url этой страницы.

Честно не знаю чем служит $curURL, скрипт нашел в интернете, а сам толком не знаю js. Надеюсь объяснил более менее понятно.
Роман000 вне форума Ответить с цитированием
Старый 15.03.2021, 22:45   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

а в чем смысл совпадения длинны с урл адресом страницы...? что в вашем понимании дочерние урл этой страницы? приведите пример урла .. и пару примеров ссылок какие должны как вы думаете попасть под ваше объяснение - а какие нет?
ADSoft вне форума Ответить с цитированием
Старый 16.03.2021, 10:03   #7
Роман000
 
Регистрация: 14.03.2021
Сообщений: 6
По умолчанию

Сейчас ещё подробнее, вот та самая страница с тем js https://minecraft20.ru/mody/

Скриншот 1 - https://i.ibb.co/qYXKRp0/Screenshot-5.jpg

Скриншот 2 (при переходе на след.страницу) - https://i.ibb.co/pWTVJxM/Screenshot-4.jpg

Последний раз редактировалось Роман000; 16.03.2021 в 10:09.
Роман000 вне форума Ответить с цитированием
Старый 16.03.2021, 10:32   #8
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

понятнее то не стало....

что надо-то? на странице https://minecraft20.ru/mody/ выделить все ссылки которые начинаются с https://minecraft20.ru/mody/ ?
ADSoft вне форума Ответить с цитированием
Старый 16.03.2021, 11:14   #9
Роман000
 
Регистрация: 14.03.2021
Сообщений: 6
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
понятнее то не стало....

что надо-то? на странице https://minecraft20.ru/mody/ выделить все ссылки которые начинаются с https://minecraft20.ru/mody/ ?
Нет, нужно только "допилить" скрипт и сделать активными кнопки при переходе на следующие номера страниц любых категорий, вот собственно чего и не хватает, пример https://minecraft20.ru/mody/1165/industrialnye/page/2/, https://minecraft20.ru/mody/1165/industrialnye/page/3/ и тд. Как ранее указал, на скриншоте 2 они не активируются при данном скрипте. На остальных страницах скрипт работает корректно
Роман000 вне форума Ответить с цитированием
Старый 16.03.2021, 17:51   #10
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

да потому что ерунду какую то делаете,
понятно что если там ссылка уже другая на странице https://minecraft20.ru/mody/1165/industrialnye/page/3/ - то и по логике он пытается найти ссылки которые ее содержат или содержат и еще длиннее, а их нет ... ибо там от корня данной страницы - https://minecraft20.ru/mody все ссылки идут....

тут единственный вариант - обрезать $curURL выкидывая /page/4 итд - тогда будет работать текущий вариант

использовать для этого $curURL.split('/');
а потом из частей составлять текущий адрес

но решение абсолютно не универсальное и бкдет работать например
только на адресах вида https://minecraft20.ru/mody/1165/industrialnye
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание классов - Имеется класс город. Класс область содержит массив городов. Класс область содержит метод, который осуществляет поиск города по его названию. martofpain C# (си шарп) 5 23.12.2019 07:57
не работает a:active IIIKBAJI HTML и CSS 16 12.12.2012 17:24
Проблема в ie7 :active povelitel HTML и CSS 0 27.06.2012 11:43
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. Человек_Борща Общие вопросы Delphi 8 27.02.2012 23:24
Класс. Проблема с выводом. zhenya.ya Общие вопросы C/C++ 6 19.09.2010 16:26