|
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 53
|
||||||
Изменение атрибута элемента массива04.04.2018, 22:59. Показов 1859. Ответов 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
|
|
|
Модератор
2380 / 1740 / 677
Регистрация: 07.08.2016
Сообщений: 4,094
|
||||||||||||||||
| 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 Добавление класса и изменение атрибута Изменение контета в зависимости от атрибута
Значение атрибута для каждого следующего элемента Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|