jquery treeview插件更改链接行为(避免崩溃)

时间:2010-01-27 06:46:47

标签: jquery treeview collapse collapsable

我正在使用jQuery Treeview插件。请查看插件http://jquery.bassistance.de/treeview/demo/的演示页面上提供的“示例1 - 默认值”。在我的情况下,所有文件夹和文件都是链接。如果我在展开的“文件夹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的数组: [li。,li.collapsable]

但我不知道如何从那里继续:-(希望有人可以帮助我...

我已经使用以下代码成功更改了当前所选(class = selected)链接的linkbehavior:

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

非常感谢提前!

1 个答案:

答案 0 :(得分: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();
        };          
    });

这个应该像它应该的那样工作。 : - )