2010-01-27 1 views
2

Я использую плагин jQuery Treeview. Посмотрите на «Пример 1 - по умолчанию», представленный на демонстрационной странице плагина http://jquery.bassistance.de/treeview/demo/. В моем случае все папки и файлы - это ссылки. Если я щелкнул, например, в расширенной «Папке 2», он сначала рухнет, а затем последует в позицию ссылки. Поведение, которое я бы хотел, - это то, что только рухнувшие будут разворачиваться первым, и если он уже будет расширен, он останется таким.jquery treeview plugin change link behavior (avoid collapse)

Код в плагине (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.collapsable]

Но я не знаю, как т о исходить из там :-(Надеюсь, кто-то может помочь мне по ...

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

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

Большое спасибо заранее!

ответ

2

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

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

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

Может быть, это помогает кто-то ищет что-то подобное.

С уважением!

UPDATE (посланное решение выше не работает, если пользователь расширил узел без перезагрузки страницы после)

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

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