将URL值缩短为Javascript变量

时间:2008-12-04 23:09:02

标签: javascript jquery regex treeview

我正在使用jQuery Treeview插件在具有嵌套级别类别的网站上进行导航。在每个类别中都有产品,每个产品都有一种或多种信息类型。

所以我的网址可以是:

  1. foo.com/view/cat_id /
  2. foo.com/view/cat_id/prod_id /
  3. foo.com/view/cat_id/prod_id/info_id /
  4. 麻烦的是,产品的导航与类别是分开的,这意味着Treeview只是'知道'(并因此标记为'活跃')案例1.案例2& 3表示树已折叠,而我希望树对所有情况都开放给cat_id。

    (我对任何事情持开放态度,但是)我认为解决方案是一些Javascript技巧,可以从URL中删除任何cat_id /之后的任何内容,这样我就可以将结果传递给Treeview,但不是那样的Javascript我无法弄清楚如何做到这一点。

    注意:我正在寻找Javascript正则表达式的帮助,而不是Treeview,虽然很可能有人知道现成的解决方案我当然都是耳朵。

    TIA。

1 个答案:

答案 0 :(得分:1)

在朋友的帮助下(谢谢Sawks)我会回答我自己的问题,以防其他人发现自己在同一条船上。

我更改了jquery.treeview.js中从206开始的行:

case "location":
    var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); });
    if ( current.length ) {
        current.addClass("selected").parents("ul, li").add( current.next() ).show();
    }
    break;
}

为:

case "location":
    var current_location = location.href.toLowerCase();
    var current_base = current_location.split('/').slice(0,5).join('/')+'/';
    var current = this.find("a").filter(function() { return this.href.toLowerCase() == current_base; });
    if ( current.length ) {
        current.addClass("selected").parents("ul, li").add( current.next() ).show();
    }
    break;
}