Тип <LI>
type
атрибут предназначен для типов маркеров.Поместите значения типов (т. Е. Значения категоризации на уровне иерархии) в атрибут класса.Измените
<li type="category" label=""><span class="k-icon ehors-subfolder-icon"></span>Account's Ledger …
на
<li class="category" label=""><span class="k-icon ehors-subfolder-icon"></span>Account's Ledger ….
Значение id
должно быть уникальным среди всех элементов DOM (кроме, возможно, переключателей).Все листья имеют промежутки с одинаковым значением id, id="spanpanelbar"
.Поместите их в атрибут класса.Измените
<li type="program"><span id="spanpanelbar" class="k-icon ehors-folderopen-icon"></span>General Ledger</li>
на
<li class="program"><span class="spanpanelbar k-icon ehors-folderopen-icon"></span>General Ledger</li>
При обработке результатов поиска совпадений изменяется только свойство style display
листьев.Измените обработку, добавив в <li>
класс, соответствующий условию результата поиска.
style
.program.nomatch {display:block; color: lightgray } /* or simply display: none */
.program.match {display:block; }
javascript
match = $(this).text().match(searchRegEx);
$li = $(this);
$li.toggleClass("match", (match!=null)).toggleClass("nomatch",(match==null));
См. dojo , обновление вашего исходного.Он имеет бонусный код для:
- в ожидании остановки ввода
- с выделением соответствующего фрагмента
Виджет PanelBar является иерархическим средством просмотра.Элементы в пути к программе должны быть отображены, чтобы увидеть программу.Чтобы отобразить только пути к найденным программам, вы должны:
- В начале поиска установить для всех элементов класс nomatch (скрыть все)
- При совпадениисделано, установите программу и ее родительские элементы, чтобы иметь соответствие класс (показать путь к программе)
Пример:
// hide top and middle tier so they wont show if there are no
// subordinate programs that match
$("li.category").toggleClass("nomatch", true).toggleClass("match",false);
$("li.module") .toggleClass("nomatch", true).toggleClass("match",false);
// evaluate each program for matching the search term
$("#panelbar li.program").each(function() {
var match, $li, $span, textnode, element;
match = $(this).text().match(searchRegEx);
$li = $(this);
// hide/display programs according to match result
$li.toggleClass("match", (match!=null))
.toggleClass("nomatch",(match==null));
// display items in path when match made
if (match!=null) {
$li.parentsUntil("#panelbar", "li")
.toggleClass("match",true)
.toggleClass("nomatch",false);
}
dojo