【问题标题】:jquery treeview plugin change link behavior (avoid collapse)jquery treeview 插件改变链接行为(避免崩溃)
【发布时间】:2011-01-09 20:15:37
【问题描述】:

我正在使用 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) 链接的链接行为:

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

非常感谢!

【问题讨论】:

    标签: jquery treeview collapse collapsable


    【解决方案1】:

    也许我不清楚我真正想做什么,所以下次我会努力提高我的语言表达能力;-)

    我自己的问题的答案是:

    $('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();
            };          
        });
    

    这个可以正常工作。 :-)

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 2015-10-04
      • 1970-01-01
      • 2020-05-17
      • 2023-03-19
      • 1970-01-01
      • 2015-11-16
      • 2010-11-04
      • 1970-01-01
      相关资源
      最近更新 更多