Плагин jquery TreeView меняет поведение ссылки (избегайте схлопывания)

StackOverflow https://stackoverflow.com/questions/2145045

Вопрос

Я использую плагин jQuery Treeview.Взгляните на «Пример 1 — по умолчанию», представленный на демонстрационной странице плагина. http://jquery.bassistance.de/treeview/demo/.В моем случае все папки и файлы являются ссылками.Если я нажму, например, на развернутую «Папку 2», она сначала свернется, а затем перейдет к местоположению ссылки.Я хотел бы, чтобы сначала расширялись только свернутые объекты, а если они уже расширились, то останутся такими.

Код в плагине (jquery.treeview.js), который переключает поведение, следующий:

66 this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) {
67 toggler.apply($(this).next());
68 }).add( $("a", this) ).hoverClass(); 

Я уже разобрался, как получить все ссылки, которые следует изменить:

$('a').parent().parent().filter('.collapsable')

Результатом будет массив всех элементов li, которые в данный момент можно свернуть (развернуть):[ли., ли.складной]

Но я не знаю, как действовать дальше :-( Надеюсь, кто-нибудь сможет мне помочь...

Я уже успешно изменил поведение ссылки для текущей выбранной ссылки (класс = выбранный) с помощью этого кода:

    $(".current").click(function(e){
        e.preventDefault();
    });

Спасибо заранее!

Нет правильного решения

Другие советы

возможно, было неясно, что я на самом деле хочу сделать, поэтому в следующий раз постараюсь улучшить свою вербализации ;-)

Ответ на мой собственный вопрос:

$('li').filter('.collapsable').find('a:first:not(.current)').click(function(e){
            e.stopImmediatePropagation();
        });

Возможно, это поможет кому-то, кто ищет что-то подобное.

С наилучшими пожеланиями!!

ОБНОВЛЕНИЕ (опубликованное выше решение не работает, если пользователь расширил узел без перезагрузки страницы после этого)

    $('a').click(function(e){
        if ($(this).is('.current')) {
            e.preventDefault();
        } else if ($(this).parent().parent().is('.collapsable')) {
            e.stopImmediatePropagation();
        };          
    });

Этот работает так, как должен.:-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top