проблемы с плагином jQuery TreeView, когда уникальное значение true - PullRequest
1 голос
/ 01 сентября 2009

Я экспериментирую с плагином TreeView, расположенным здесь: http://docs.jquery.com/Plugins/Treeview

Одна из опций, которую он имеет, является «уникальной» - иметь возможность раскрывать только один элемент за раз.

Он очень хорошо работает для отображения, но затем я пытаюсь подключиться к свойству / событию «Переключить» TreeView, чтобы выяснить, какой именно был расширен.

Когда для «unique» установлено значение true, функция, переданная в «toggle», похоже, срабатывает для каждого из основных элементов списка, что не позволяет мне определить, какое из них фактически инициализировало расширение. Я понимаю, почему это сделано - чтобы убедиться, что другие элементы переключены таким образом, что раскрывается только один элемент.

Любые идеи о том, как получить только идентификатор «уникального» элемента списка, который был переключен / расширен.

пример кода ниже

$(document).ready(function() {
$("#browser").treeview({
    collapsed: true,
    unique: true,
    toggle: function()
    {
            $('#console').append(this.id + ' was toggled');
    }
 });
});

<ul>
<li id="1">Ottawa
    <ul>
        <li>Item 1</li>
        <li>Item 9</li>
    </ul>
</li>
<li id="2">Montreal
    <ul>
        <li>Item 2</li>
        <li>Item 8</li>
    </ul>
</li>
<li id="3">Quebeque
    <ul>
        <li>Item 3</li>
    </ul>
</li>
<li id="4">Calgary
    <ul>
        <li>Item 7</li>
    </ul>
</li>
<li id="6">Toronto
    <ul>
        <li>Item 10</li>
    </ul>
</li>
</ul>
<div id="console"></div>

1 Ответ

1 голос
/ 01 сентября 2009

Этот плагин может использовать еще несколько событий, но вы можете легко определить, какой из них был нажат, проверив наличие видимых дочерних элементов:

if($(this).find("ul:visible").length)
{
    $('#console').append(this.id + ' was toggled');
}

В зависимости от вашей HTML-структуры вы можете изменить find на более быстрый children. Это все еще запускает событие toggle для всех узлов, но проверяет правильный узел.
Смотрите в действии здесь: http://jsbin.com/esoxu

...