|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 53
|
||||||
Изменение атрибута элемента массива04.04.2018, 22:59. Показов 1827. Ответов 18
Метки нет (Все метки)
Не работает закомментированный кусок кода.
Выбрали категорию, показали данные соответствующей категории. Затем перебираем radio брендов, если в текущем бренде нет нужной категории, то radio необходимо отключить. В следующей функции мы уже сортируем полученный данные по брендам, где бренды которые ничего не отображают уже должны быть выключены. Файл прилагаю.
0
|
||||||
| 04.04.2018, 22:59 | |
|
Ответы с готовыми решениями:
18
Jquery поиск элемента и изменение атрибута Событие изменение атрибута
|
|
|
||||||
| 05.04.2018, 01:19 | ||||||
|
Mad1k, насколько я понял из объяснения, тебе надо при клике на категории делать неактивными бренды, которых в этой категории нет. При этом информацию о том, какие бренды в какой категории присутствуют, надо брать из набора данных. Я добавил в твоей разметке дополнительный атрибут data-value всем чекбоксам, для того, чтобы было за какой бренд или категорию данный чекбокс отвечает. В твоем коде тоже не сильно копался, просто добавил функцию, которая выполняет работу, а в коде нашел место, откуда ее можно вызвать. В результате получилось следующее.
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 53
|
|
| 05.04.2018, 02:04 [ТС] | |
|
diadiavova, пожалуйста, прокомментируйте Ваш код новичку.
Добавлено через 1 минуту diadiavova, желательно очень подробно.
0
|
|
|
|
||||||
| 05.04.2018, 10:45 | ||||||
|
Mad1k, функция setBrandCheckboxesDisable устанавливает значение свойства disabled для всех инпутов с классом brand-tem, в соответствии с категорией, которую эта функция принимает как аргумент.
$(".data-items-list ." + category) - здесь из катекории формируется селектор, позволяющий отобрать из блока data-item-list элементы, у которых есть класс с именем, совпадающим с тем, что было передано в функцию. Ну например: если имя категории было category-1, то селектор будет .data-item-list .category-1. И собственно получаем жквери объект, содержащий все элементы данных с таким классом..parent("div"). Поскольку мы ищем имена брендов. соответствующие выбранной категории, а в структура элемента данных тут выглядит так
.toArray() - здесь объект жквери превращаем в массив дивов, найденных на предыдущем шаге..map(e => e.className) - здесь массив дивов превращается в массив имен классов этих самых дивов. Таким образом переменная brands будет содержать массив строк, каждая из которых представляет имя одного из брендов, соответствующих выбранной категории.$(".brand-item").each(function (i, e) - находим все радиокнопки, соответствующие брендам и к каждому применяем функцию.e.disabled = !brands.includes(e.getAttribute("data-value")); - здесь радиокнопке соответсвует аргумент e и его свойству disabled присваивается значение. Значение формируется следующим образом: у элемента извлекается атрибут data-value, который указывает за какой бренда данная радиокнопка отвечает и выполняется проверка на предмет присутствия этого значения в массива brands (функция includes) и значение, возвращаемое includes меняется на противополжное оператором !.Думаю, объяснил предельно подробно.
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 53
|
|
| 05.04.2018, 11:44 [ТС] | |
|
diadiavova, понятно, а не могли бы помочь реализовать это в обе стороны, т.е. выбрали категорию, заблокировались лишние бренды и наоборот, выбрали бренд - заблокировались лишние категории
0
|
|
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,092
|
||||||||||||||||
| 05.04.2018, 13:46 | ||||||||||||||||
|
Код конечно еще допиливать и допиливать, но с задачей справляется:
Живой пример
0
|
||||||||||||||||
|
|
||
| 05.04.2018, 14:47 | ||
|
Что мы имеем сейчас: Пользователь выбрал категорию - набор брендов отсортировался. Для чего это нужно? Ну по всей видимости для того, чтобы можно было просматривать товары по брендам в этой категории. И действительно, когда выбирается бренд, товары дополнительно фильтруются. Что мы получим, если реализовать твою странную задумку: Пользователь выбрал категорию - набор брендов отсортировался. Пока все хорошо. Дальше он выбирает бренд - дизейблятся категории. Вопрос в том, что при этом происходит с товаром? Если все как раньше, то есть недоступные бренды все еще недоступны и при этом недоступными стали некоторые категории, то не получится ли так, что до некоторых брендов после этой незатейливой операции вообще достучаться будет возможно только после перезагрузки страницы? Ну вот допустим после выбора категории brand-3 стал недоступен. Доступ теперь к нему возможен только если выбрать дну из категорий, в которой есть этот бренд, что уже само по себе не очень удобно, особенно если категорий будет много. Но после выбора скажем brand-1, когда некоторые категории тоже станут недоступны, может возникнуть ситуация, что доступных категорий с этим брендом вообще не останется. И как ты собираешься это решать? Если же после выбора одного из брендов все остальные станут доступные, то как отсортировать товар и по категории и по бренду?
0
|
||
|
|
||
| 05.04.2018, 14:58 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 53
|
|
| 05.04.2018, 15:29 [ТС] | |
|
diadiavova, изначальная суть - сделать фильтр который бы блокировал свой Item который не вернёт никакого результата изначально. Бывает что приложение долго обрабатывает ajax запрос, ты такой выбрал, а там в итоге пусто - поэтому нужно предотвратить такой выбор
0
|
|
|
|
||||||
| 05.04.2018, 22:00 | ||||||
Сообщение было отмечено Mad1k как решение
Решение
Mad1k, судя по всему, мои увещевания не возымели действия. В принципе реализовать ту же логику и в обратную сторону - не проблема, код почти такой же, правда пришлось добавить датаитемы дополнительный атрибут data-category, поскольку по классу там не определишь, какой именно является именем категории. Но вряд ли это работает так как ты хотел изначально. Все-таки вернись к моему описанию возможных проблем и хорошенечко продумай как все это должно себя вести. А пока держи то что есть.
1
|
||||||
|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 53
|
|
| 06.04.2018, 17:14 [ТС] | |
|
diadiavova, Изначально при выборе первом бренда, ничего не отображается
0
|
|
|
|
||
| 06.04.2018, 18:59 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 53
|
|
| 08.04.2018, 00:49 [ТС] | |
|
diadiavova, Разобрался, спасибо большое
0
|
|
|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 53
|
|||||||||||
| 19.04.2018, 23:22 [ТС] | |||||||||||
|
diadiavova, всё таки фильтр будет на клиенте наш, пробовал прикрутить Вашу функцию, но видимо в нашей структуре не так всё. Не могли бы Вы помочь.
Структура данных которые фильтруются:
0
|
|||||||||||
|
|
|
| 19.04.2018, 23:48 | |
|
Mad1k, честно говоря, я не понял, что от меня требуется?
0
|
|
|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 53
|
|||||||||||
| 19.04.2018, 23:52 [ТС] | |||||||||||
|
diadiavova, помните вы описывали функции
Подставить класс disable в item фильтра
0
|
|||||||||||
|
|
||||||
| 20.04.2018, 00:11 | ||||||
|
Mad1k, тогда у меня было более полное представление и о структуре фрагмента документа, с которым надо работать и о критериях фильтрации. А здесь мне непонятно что нужно делать и с чем это нужно делать. Ну например, взять вот этот фрагмент
Что мне было известно: 1. Все элементы, с которых надо собрать данные находятся в контейнере, имеющем класс data-items-list2. Каждый элемент данных имеет класс с именем категории. 3. У каждого элемента из предыдущего пункта есть ближайший предок div, единственный класс которого совпадает и именем бренда. Что я тут делаю, имея эти данные: $(".data-items-list ." + category) - выбираю всех потомков data-item-list с классом, имя которого совпадает с заданной категорией..parent("div") - нахожу родительские дивы..toArray().map(e =>e.className) - превращаю это дело в массив элементов, из которых извлекаю имена классов, которые соответствуют именам брендов.Для чего я все это расписываю? Ну чтобы было понятно, что там у меня была вся информация и о структуре данных и о том, по каким критериям что надо искать. Что из этого известно мне сейчас?
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 53
|
|||||||||||||||||
| 20.04.2018, 00:37 [ТС] | |||||||||||||||||
фильтр состоит из ссылок вида
0
|
|||||||||||||||||
|
|
||||||||
| 20.04.2018, 01:26 | ||||||||
hide со стилем display:none. Одним словом: надо пробовать.
0
|
||||||||
| 20.04.2018, 01:26 | |
|
Помогаю со студенческими работами здесь
19
Изменение атрибута type у input Добавление класса и изменение атрибута Изменение контета в зависимости от атрибута
Значение атрибута для каждого следующего элемента Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|