Pull to refresh

Дерево категорий с чекбоксами на JQuery

Reading time2 min
Views1.6K

Begin



Делаем каталог. Понадобилось сделать дерево категорий товара/фирм/услуг с бесконечной вложенностью. Каждую категорию можно отметить чекбоксом, чтобы потом можно было получить список/массив всех отмеченных категорий (например для поиска по ним).

Написал такое вот деревце. Реализовал в виде плагина к любимому JQuery )

Что умеет:


  • Если указан пустой див — загружает из указанного скрипта все категории, и подкатегории(вложенные ul, если li имеет класс folder и не имеет вложенного списка(ul) — дерево будет автоматом подгружать этот список из указанного скрипта с указанной глубиной рекурсии(это забота скрипта выдавать запрашиваемые данные с требуемыми параметрами).
  • Если указан готовый список — то можно сворачивать/разворачивать подкатегории, отмечать нужные, которые будут подсвечены заданным классом
  • Получать выбранные номера категорий (value чекбоксов) в массиве
  • Возможность поиска по всем загруженным веткам дерева, вывод результата поиска в указанный див(указывается див для поиска, в котором строка для ввода запроса + див(пустой) для вывода результатов)
  • Число результатов поиска можно ограничить (в параметрах)
  • При клике на одном из найденных результатов — дерево открывается чтобы отобразить заданную ветку и она подсвечивается классом(указывается в параметрах)
  • Можно задать чтобы при клике на родительской категории — внутренние также выделялись
  • Можно задать сообщение которое выдается при попытке выделить лишний чекбокс если число их ограничено.


Вроде ничего не забыл )

Параметры:

  • _loadPath — путь к файлу откуда будут загружены категории.
  • _loadLvl — число подкатегорий по умолчанию — 0 — загружать все вложенные
  • _selectChildren — выделять или нет дочерние подкатегории при выделении родительской
  • _liminSelected — ограничить число отмеченных категорий
  • _limitMessage — сообщение при превышении кол-ва отмеченных категорий
  • _searchDiv — контейнер для поиска (должна находится строка и див)
  • _showResult — сколько найденных результатов поиска показывать 0-все.
  • _hlClass — класс которым будет подсвечены найденные категории
  • _checkedClass — класс подсвечивающий отмеченные категории.


Использование:
$('.sp-tree-container').tree({_loadPath: 'php/li.html'});

* This source code was highlighted with Source Code Highlighter.


Немного поясню: элемент li который имеет вложенные списки должен иметь класс folder, все ul, которые должны быть видимы имеют класс expanded. Заглавие категории засовывается в span, как раз по клику на него и происходит сворачивание/разворачивание подветви.

Ну вроде все…

Сильно красоту еще не наводил, так что не судите. Приму конструктивную критику ;)
Tags:
Hubs:
+10
Comments10

Articles